50分求助!
查看原帖
50分求助!
731423
封禁用户楼主2022/8/9 10:02
#include<iostream>
#include<cstdio>
#include<algorithm> 
using namespace std;
const int N=2e5;
struct node{
	int n,s;
}a[N]; 
int n,dp[N],cnt=1;
bool cmp(node a,node b){
	return a.n<b.n;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].n>>a[i].s;
	}
	sort(a+1,a+n+1,cmp);
	dp[cnt]=a[1].s;
	for(int i=2;i<=n;i++){
		if(a[i].s>dp[cnt]) dp[++cnt]=a[i].s;
		else{
			int l=1,r=cnt,mid;
			while(l<r){
				mid=(l+r)>>1;
				if(dp[mid]>=a[i].s) r=mid;
				else l=mid+1;
			}
			dp[r]=a[i].s;
		}
	}
	cout<<cnt;
	return 0;
}

用了二分优化,只对了前10个点,剩下的WA

2022/8/9 10:02
加载中...