写这篇文章的的时候心里有些难受,昨天晚上,和一个大佬学长,在线去AC,5道题我花了3个小时才AC了3道,他30分钟就AK了,心里还是挺扎心的,没事这也让我看清楚了差距,以后加油刷题吧,毕竟大学如果碌碌无为,那就不用去上大学了,这道题我以前写过,没想到还是卡了,说明理解不透!决定开始写题解博客!让自己刷题有个记录,就算马上来的天梯赛选拔失败,至少证明我来过!!!
题目链接:今年暑假不AC
AC代码:
#include<iostream>
#include<algorithm>
using namespace std;
struct time{
int time_bigan,time_end; // 以结构体来记录每个节目开场和结束时间
};
struct time ans[110];
bool cmp (time a,time b)
{
return a.time_end<b.time_end; // 按照结束时间以升序排序
}
int main()
{
int n;
while(cin>>n&&n)
{
for(int i=0;i<n;i++)
cin>>ans[i].time_bigan>>ans[i].time_end;
sort(ans,ans+n,cmp);
int flag=1,key=ans[0].time_end; // 这一步很重要
for(int i=1;i<n;i++)
{
if(key<=ans[i].time_bigan)
{
flag++;
key=ans[i].time_end; // 只有当if中的条件满足才可以交换结束时间
}
cout<<flag<<endl;
}
return 0;
}
// 输出结果:
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
5
0
--------------------------------
Process exited after 4.571 seconds with return value 0
请按任意键继续. . .