UVALive 4244 Party Party Party(HDU 2779 && Sicily 1663)
来源:互联网 发布:怎样学习单片机编程 编辑:程序博客网 时间:2024/04/30 07:58
Constraints
Time Limit: 1 secs, Memory Limit: 32 MB
Description
Emma has just graduated high school and it is the custom for the new graduates to throw parties for themselves and invite everyone in school to attend. Naturally, Emma wishes to attend as many parties as possible. This is not such a problem on a weekday since usually there are only two or three parties in the evening. But, Saturdays are packed! Typically some parties start at 8 AM (breakfast is served) while others might end at midnight (much to the annoyance of the neighbors). Emma naturally wants to know how many parties she can attend.
Each party has a starting and stopping time, which are on the hour. These are listed via a 24-hour clock. For example, a party might start at 10 AM (10) and end at 2 PM (14). The earliest a party can start is 8 AM (8) and the latest it can end is midnight (24). In order not to be rude, Emma stays at each party at least one half hour and will consider traveling time between parties to be instantaneous. If there are times during the day when there are no parties to attend, she'll simply go home and rest.
Input
There will be multiple test cases. Each test case starts with a line containing an integerp (≤100) indicating the number of parties on the given day. (A value ofp = 0 indicates end of input.) The following p lines are each of the form s e , both integers where8≤s < e≤24 , indicating a party that starts at times and ends at time e . Note there may be multiple parties with the same starting and ending time.
Output
For each input set output a line of the form
On day d Emma can attend as many as n parties.
where you determine the value of n and d is the number of the test case starting at 1.
Sample Input
812 1313 1412 139 109 1012 1312 149 11314 1514 1514 150
Sample Output
On day 1 Emma can attend as many as 7 parties.On day 2 Emma can attend as many as 2 parties.
Solution
题意是给出n个party的开始和结束时间,至少在每个party呆半个小时,求最多可以参加多少个party。
可以比较容易的想到是简单的贪心,按party时间从短到长排序,依次去参加每一个。
注意在时间上做标记。
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int s[105], e[105], r[105];bool times[105];bool cmp(const int a, const int b){ return e[a] - s[a] < e[b] - s[b];}int main(){ int p, ca = 0; while (scanf("%d", &p) == 1 && p) { int i, j, c = 0; memset(times, 0, sizeof(times)); for (i = 0; i < p; ++i) { scanf("%d%d", &s[i], &e[i]); //方便给时间做标记,第n个半小时 s[i] *= 2; e[i] *= 2; r[i] = i; } sort(r, r + p, cmp); for (i = 0; i < p; ++i) { int t = r[i]; for (j = s[t]+1; j <= e[t]; ++j) if (!times[j])//第j个半小时是空闲的 { times[j] = true; ++c; break; } } printf("On day %d Emma can attend as many as %d parties.\n", ++ca, c); } return 0;}
- UVALive 4244 Party Party Party(HDU 2779 && Sicily 1663)
- Party
- Party
- Party
- Party
- Party
- sicily 4834. Party Location
- Sicily 4834. Party Location
- Sicily 10482. Party Invitations
- Sicily 13061. Block Party
- Crazy tea party(UVALive 2756)
- UVALive 2756 Crazy tea party
- HDU 1520 Anniversary party
- Monkey Party hdu 3506
- HDU-1520-Anniversary party
- Hdu 3062 Party
- HDU-1520-Anniversary party
- HDU 1520(Anniversary party)
- 《C语言及程序设计》实践参考——单分支结构流程图-大值
- 《C语言及程序设计》实践参考——构造菜单
- Objective-C语法快速参考
- 文章标题
- 项目里程碑评审的关注点
- UVALive 4244 Party Party Party(HDU 2779 && Sicily 1663)
- HDOJ 1875 畅通工程再续(prim)
- Python:重启
- Linux运维工程师初级到高级学习线路图
- poj 1625 Censored! (ac自动机+dp)
- Python 中的编码转换 编码方案 中文解码 gbk , utf ,unicode
- read-python-code-with-cscope-on-emacs
- 使用压缩池对读取自标准的谁的数据进行压缩,然后将其写到标准输出
- Scala 自学笔记 集合