题意
求切断 n n n个连续片段的最小操作数(竖着切)
思路
问题可转换为最大不相交区间个数这是至少要切的个数,然后就是用活动安排来贪心,以 r r r为第一关键字, l l l为第二关键字排序。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e4+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define fi first
#define se second
#define pb push_back
PII a[N];
int main(){
int n;scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&a[i].se,&a[i].fi);
a[i].fi+=a[i].se;
}sort(a+1,a+n+1);
int cnt=0,r=0;
for(int i=1;i<=n;i++)
if(r<=a[i].se){
cnt++;
r=a[i].fi;
}printf("%d\n",cnt);
return 0;
}