zoukankan      html  css  js  c++  java
  • Selecting courses(hdu 3697 贪心

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3697

     因为每隔5分钟选一次 那么枚举0-4就可以 5-1000 都可以由0-4加5加5得到

    然后就是题目说可以在非整数点的时候开始 那我们就枚举0.0001,1.0001,2.0001,3.0001,4.0001

    这样肯定比枚举0-4可以选择的要多

    so 我们for(i=0 to 4)

    j=i to 1000 每次加5

    一个时间段开始的时间要是<=j并且结束时间>j 那就可以选上 (因为假设现在i是从0 开始 实际上是代表0.0001 所以开始的时间是0的这个时间段可以选上 但是结束的时间必须>0 )

    代码;

    #include<bits/stdc++.h>
    using namespace std;
    struct node
    {
        int s,t;
    }a[305];
    bool cmp(node x,node y)
    {
        if(x.t!=y.t)return x.t<y.t;
            return x.s<y.s;
    }
    int main()
    {
        int n,i,j;
        while(scanf("%d",&n),n)
        {
            for(i=0;i<n;i++)
            {
                scanf("%d%d",&a[i].s,&a[i].t);
            }
            sort(a,a+n,cmp);
            int maxx=0;
            for(i=0;i<=4;i++)//假设从0.001开始 即i=0
            {
                int visit[305];
                int ans=0;
                memset(visit,0,sizeof(visit));
                for(j=i;j<=1000;j+=5)
                {
                    for(int k=0;k<n;k++)
                    {
                        if(visit[k]==0&&a[k].s<=j&&a[k].t>j)//那么这里的a【k】.s就可以等于j(j是从i来的,每次加5)
                        {
                            visit[k]=1;
                            ans++;
                            break;
                        }
                    }
                }
                maxx=max(maxx,ans);
            }
            cout<<maxx<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Java集合框架知多少——干货!!!
    Java基础小记
    初识Java
    HTML5入门必知
    密码技术小结
    [MDK]Keil在下载程序一直提示更新J-Link
    Python 循环
    2021年7月14日
    bzoj 2653 middle (主席树+二分)
    bzoj 3932 [CQOI2015]任务查询系统 (主席树)
  • 原文地址:https://www.cnblogs.com/ydw--/p/11371369.html
Copyright © 2011-2022 走看看