TZOJ2882: 美食节之感恩父母

#include<stdio.h>
int main()
{
    int a[100],b[100],i,j,max,m,t1,t2,t3;
    while(scanf("%d",&m),m)
    {
        max=1;
        for(i=0;i<m;i++)
        {
            scanf("%d %d",&a[i],&b[i]);
        }
        for(i=0;i<m;i++)
        for(j=0;j<m-1-i;j++)
        {
            if(b[j]>b[j+1])
            {
                t1=a[j];
                a[j]=a[j+1];
                a[j+1]=t1;
                t2=b[j];
                b[j]=b[j+1];
                b[j+1]=t2;
            }    
        }
        for(i=0;i<m;i++)
        for(j=0;j<m-1-i;j++)
        {
            if(b[j]==b[j+1])
            {
                if(a[j]>a[j+1])
                {
                    t1=a[j];
                a[j]=a[j+1];
                a[j+1]=t1;
                }
            }
        }
        t3=0;
        for(i=0;i<m-1;i++)
        {
            
                if(a[i+1]>=b[t3])
                {
                    max++;
                    t3=i+1;
                }
                else
                {
                t3=t3;    
                }    
        }
        printf("%d\n",max);
    }
    return 0;
}
思路就是同一段的食材是不可以重复使用的。所以我们要尽量的让同样多的食材做出更多的菜。
所以我们就想到用贪心来做。先以结束的食材编号为主要的依据进行升序排序,当结束食材的变号相同是以开始的食材的编号为依据进行升序排序。
然后要尽可能多的选择出来食材去做菜。

 

posted on 2019-08-13 22:27  随便看看——  阅读(219)  评论(0)    收藏  举报

导航