HDU 2037 今年暑假不AC (贪心)

代码:


智商-100。

刚开始没有思路,还天真的以为将节目时间最短的从小到大排,时间相同时将开始时间最小的放到前面。

但没法贪心做。

后来看了别人的题解才知道。我的智商已经低于正常人了。

贪心方法:

将节目的结束时间从小到大排,直接比较。

和UVA的11729一样。(来自大白)

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>

using namespace std;

struct node
{
    int x,y;
} q[105];

int com(node a,node b)
{
    return a.y<b.y;
}

int main()
{
    int t;
    while(~scanf("%d",&t))
    {
        if(t==0)
            return 0;
        int a[105];
        int b[105];
        for(int i=0; i<t; i++)
        {
            scanf("%d%d",&q[i].x,&q[i].y);
        }

        sort(q,q+t,com);

        //for(int i=0; i<t; i++)
         //   printf("%d %d\n",q[i].x,q[i].y);
        //int maps[10005]={0};
        int x=q[0].x;
        int y=q[0].y;
        int ans=1;
        for(int i=1; i<t; i++)
        {
            if(q[i].x>=y)
            {
                y=q[i].y;
                ans++;
            }

        }
        printf("%d\n",ans);
    }
}


你可能感兴趣的:(HDU 2037 今年暑假不AC (贪心))