今年暑假不AC
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 77466 Accepted Submission(s): 41512
Problem Description
假设你已经知道了所有你喜欢看的电视节目的转播时间表,你会合理安排吗?(目标是能看尽量多的完整节目)
Input
输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(n<=100),表示你喜欢看的节目的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。n=0表示输入结束,不做处理。
Output
对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。
#include <iostream>
using namespace std;
int n;
int st[101];
int ed[101];
int cnt;
int curend;
void inputAndInit();
int greedy();
int main()
{
while(cin>>n&&n)
{
inputAndInit();
cout<<greedy()<<endl;
}
return 0;
}
void inputAndInit()
{
//输入数据
for(int i=0; i<n; i++)
{
cin>>st[i]>>ed[i];
}
//按照结束时间升序排序
for(int i=0; i<n; i++)
{
for(int j=i; j<n; j++)
{
if(ed[i]>ed[j])
{
swap(st[i],st[j]);
swap(ed[i],ed[j]);
}
}
}
cnt=0;
curend=0;
}
int greedy()
{
for(int i=0; i<n; i++)
{
if(curend<=st[i])
{
cnt++;
curend=ed[i];
}
}
return cnt;
}
【2018/11/9后记】
1.这道题跟活动安排问题完全一样,最简单的贪心题目。
这道题就是当年我没学算法的时候卡了很久的那道题,
这道题我现在已经可以一遍AC了,
这道题……把当初幼稚且一腔热血的我,和现在勤勤恳恳且依旧热血的我奇妙的联系了起来。
2.这辈子最遗憾的事就是,电脑永远无法承载我对它的爱,代码永远不会知道它曾是我的心血和珍宝,AI永远无法理解我一直很想对它说的一句话:
“好喜欢你,知不知道”