贪心~
#include<bits/stdc++.h> using namespace std; struct node{ int s,f; }nod[33000]; bool comp(node x,node y) { if(x.f<y.f) return true; else return 0; } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { int x,y; cin>>x>>y; nod[i].s=x,nod[i].f=x+y-1; } sort(nod+1,nod+1+n,comp);//按照结束位置排序 int fina=nod[1].f,cnt=1;//fina记录上一个的结束位置 for(int i=2;i<=n;i++) { if(fina>=nod[i].s) continue; else{ cnt++; fina=nod[i].f; } } cout<<cnt; }