Selecting courses(hdu 3697 贪心

Posted ydw--

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于Selecting courses(hdu 3697 贪心的主要内容,如果未能解决你的问题,请参考以下文章

Selecting Courses

poj-2239-Selecting Courses

poj——2239 Selecting Courses

Hdoj 3697 Selecting courses 贪心

[POJ 2239] Selecting Courses

POJ2239-Selecting Courses-(匈牙利算法)