这个题和看电影(贪心)是一样的
看电影:求最多能看到的完整电影数量
对本题而言,至少切的刀数 = 最多的完整电影数量
所以
#include<bits/stdc++.h> #define int long long using namespace std; const int maxn = 4e4 + 10; int n,ans; pair<int,int> p[maxn]; bool cmp(pair<int,int>a,pair<int,int>b){ return a.second < b.second; } signed main() { //freopen("in","r",stdin); ios::sync_with_stdio(0); cin >> n; for (int i = 0; i < n; i++) { int g;cin >> p[i].first >> g,p[i].second = p[i].first + g; } sort(p,p + n,cmp); int last = 0; for(int i = 0; i < n; i++) { if(last <= p[i].first) last = p[i].second,ans++; } cout << ans << endl; return 0; }