【杭电100题】【贪心】2037 今年暑假不AC(活动安排问题)

今年暑假不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永远无法理解我一直很想对它说的一句话:

“好喜欢你,知不知道”

猜你喜欢

转载自blog.csdn.net/qq_41727666/article/details/83903726
今日推荐