2016HUAS_ACM暑假集训2J - 今年暑假不AC

时间:2023-03-09 23:57:48
2016HUAS_ACM暑假集训2J - 今年暑假不AC

简单的贪心题。把节目的结束时间按升序排列,从第一个节目开始,寻找可以完全看完的节目。

这里用了结构体,所以要自己写排序方式。

总之,贪心的第一要义就是——排序

本人新手,请体谅。

#include<iostream>
#include<algorithm>
using namespace std;
struct time//一个节目的开始和结束
{
int s,e;
};
bool com(struct time a,struct time b)//排序方式
{
return a.e<b.e;
}
int main()
{
int n,i,t,c;
time show[];
while((cin>>n),n)
{
c=;
for(i=;i<n;i++)
cin>>show[i].s>>show[i].e;
sort(show,show+n,com);
t=show[].e;//临时变量
for(i=;i<n;i++)//从第二个节目开始比较
{
if(show[i].s>=t)//后一个节目开始晚于前一个节目结束
{
c++;//可以看完
t=show[i].e;//把临时变量改为当前节目的结束,来进行下一次的比较
}
}
cout<<c<<endl;
}
return ;
}