您的位置:首页 > 其它

HDU-3697 贪心

2016-08-04 21:01 246 查看
题意:给出n门课的选课起止时间,每五分钟选择一门,最多能选择几门课。

贪心,截止时间早的课程优先选,但是优先级低的课程选的时间可以放在优先级高的前面,然后从0到4枚举开始时间。讲结果存放在一个时间轴上,最后统计什么时候开始选选的课最多。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct node {
int b, e;
}id[300];
bool cmp(node a, node b) {
if(a.e != b.e)
return a.e < b.e;
return a.b < b.b;
}
int cn[1111];
int main(){
int n, i, j, k;
while(~scanf("%d", &n) && n) {
memset(cn, 0, sizeof(cn));
for(i = 0; i < n; i++) {
scanf("%d%d", &id[i].b, &id[i].e);
}
sort(id, id + n, cmp);
int ans = 0, pre = -1;
for(i = 0; i < 5; i++) {
for(j = 0; j < n; j++){
for(k = id[j].b; k % 5 != i; k++);
for(; k < id[j].e; k += 5) {
if(!cn[k]) {
cn[k] = 1;
break;
}
}
}
}
for(i = 5; i <= 1000; i++)
cn[i] += cn[i - 5];
//        for(i = 996; i <= 1000; i++)
//            printf("%d ", cn[i]);
//        printf("\n");
for(i = 996; i <= 1000; i++)
if(ans < cn[i])
ans = cn[i];
printf("%d\n", ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  HDU 3697 贪心