Planification des trains PTA (utilisation de la fonction, limite supérieure)

L2-014 Répartition des trains (25 minutes)

une analyse:

Au début, une boucle était utilisée pour trouver la position d'insertion, le temps était O (n * n), et le résultat était timeout, donc la fonction upper_bound (lower_bound) a été utilisée à la place, et la dichotomie a été utilisée pour rechercher rapidement. De plus, en stockant la valeur minimale de chaque piste par ordre croissant, le code peut également être simplifié.

Code:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    
    
	int n, ma[100010], ans = 0;
	cin >> n;
	while(n--){
    
    
	    int a;
		cin >> a;
		//从1开始储存,而非0,可以更加简化,但要注意下面的函数中地址也要从1开始
		if (a>ma[ans]) ma[++ans]=a;		
		else *upper_bound(ma+1,ma+ans+1,a)=a;
	}
	cout << ans;
	return 0;
}

Je suppose que tu aimes

Origine blog.csdn.net/qq_43700916/article/details/88625043
conseillé
Classement