hdu 2491 贪心
来源:互联网 发布:外国帅哥知乎 编辑:程序博客网 时间:2024/06/06 19:07
http://acm.hdu.edu.cn/showproblem.php?pid=2491
题目大意:一个牧师要主持n个婚礼,牧师参加每个婚礼的时间要大于婚礼总时间的一半,给出每个婚礼的起止时间,问能否安排牧师主持每一个婚礼。
思路:贪心思想。按每个婚礼的中间时间(即牧师离开该婚礼的最早时间)升序排序。如果中间时间相等,按开始时间升序排序。然后依次安排即可。
#include<iostream>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>using namespace std;struct node{int start,end,last,middle;}wedding[100005];int cmp(const void* a,const void* b){if((*(node*)a).middle == (*(node*)b).middle)return (*(node*)a).start-(*(node*)b).start;elsereturn (*(node*)a).middle-(*(node*)b).middle;}int main(){int n,time,i;while(scanf("%d",&n),n){for(i=0;i<n;i++){scanf("%d%d",&wedding[i].start,&wedding[i].end);wedding[i].last=(wedding[i].end-wedding[i].start)/2+1;//仪式持续时间超过婚礼一半wedding[i].middle=wedding[i].start+wedding[i].last;}qsort(wedding,n,sizeof(wedding[0]),cmp);time=wedding[0].start;for(i=0;i<n;i++){if(time>wedding[i].end-wedding[i].last){break;}if(time<=wedding[i].start)time=wedding[i].middle;elsetime+=wedding[i].last;}if(i==n) printf("YES\n");else printf("NO\n");}return 0;}
- hdu 2491 贪心
- hdu 2491 贪心
- hdu 2491 (贪心+排序)
- HDU 贪心
- 【贪心】hdu
- HDU 2111 Saving HDU(贪心)
- HDU 2111贪心--【Saving HDU】
- HDU 2111 Saving HDU (贪心)
- HDU Saving HDU (贪心)
- HDU 2111 Saving HDU【贪心】
- 【HDU 2111】Saving HDU(贪心)
- HDU.2111 Saving HDU(贪心)
- hdu 1257 dp+贪心
- HDU 1257 DP + 贪心
- hdu pie(二分+贪心)
- hdu 2037 贪心
- 【贪心】hdu 2863
- HDU 4023 贪心+博弈
- 第30天的交易(2013-5-1)(-100)(-66.94)
- 淘宝模板开发系列之DOM、CSS规范
- 2013-5-3 工作笔记
- HDU 1166敌兵布阵(线段树)
- 开源项目SEMAINE介绍
- hdu 2491 贪心
- “黑马程序员”学习笔记十
- 向量空间模型VSM
- Reflector收费了,那就用ILSpy
- matlab中() [] {} 数组 向量 矩阵
- Oracle10g 数据泵导出命令 expdp 使用总结
- 纯CSS3实现的标签效果
- 淘宝模板开发系列之模板编写规范
- A + B Problem II