【悬关】10pts 求救
查看原帖
【悬关】10pts 求救
785639
xuchuhan楼主2024/8/28 13:29

rt,救救孩子吧…

#include<bits/stdc++.h>
#define int long long
#define pii pair<int,int>
using namespace std;
const int N=1e5+5;
int n,m,tot;
int dp[N];
map<pii,int>f;
struct node{
	int l,r;
}a[N];
struct inter{
	int l,r,val;
}t[N];
int Find(int i){
	int lt=-1,rt=i,val=t[i].l;
	while(lt+1<rt){
		int mid=(lt+rt)/2;
		if(t[mid].r<val)
			lt=mid;
		else
			rt=mid;
	}
	return lt;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		int x,y;
		cin>>x>>y;
		if(x+1>n-y)
			continue;
		a[++m]={x+1,n-y};
	}
	for(int i=1;i<=m;i++)
		f[{a[i].l,a[i].r}]++;
	for(auto&it:f)
		t[++tot]={it.first.first,it.first.second,min(it.second,it.first.second-it.first.first+1)};
	for(int i=1;i<=tot;i++){
		int pre=Find(i);
		dp[i]=max(dp[i],dp[pre]+t[i].val);
	}
	cout<<n-dp[tot];
	return 0;
}
2024/8/28 13:29
加载中...