题目链接 https://www.luogu.com.cn/problem/P1803
非要整些花里胡哨的题目和题意。。。。。。。
经典入门的贪心
因为要参加尽可能多的比赛,所以将结束时间排序,下一场比赛取结束时间早且与上一场比赛时间不冲突的。
放AC代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 struct px 4 { 5 int a;//开始时间 6 int b;//结束时间 7 }x[1000050]; 8 bool cmp(px x,px y)//按结束时间排序 9 { 10 return x.b<y.b; 11 } 12 int main() 13 { 14 int n,sum=1,mi; 15 cin>>n; 16 for(int i=1;i<=n;i++) 17 cin>>x[i].a>>x[i].b; 18 sort(x+1,x+n+1,cmp); 19 mi=x[1].b;//记录第一个值 20 int j=1; 21 while(j<=n) 22 { 23 j++; 24 if(x[j].a>=mi) 25 {//找到符合要求的比赛,记录,参加 26 sum++; 27 mi=x[j].b; 28 } 29 } 30 cout<<sum; 31 return 0; 32 }