ZCMU-1478
2016-12-29 17:39
197 查看
1478: 天坑的餐馆
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 75 Solved: 26
[Submit][Status][Web
Board]
Description
天坑毕业后开了一家餐馆,每天都有很多人来吃饭。已知今天共有n组客人来吃饭,第i组一共有Xi位客人,到达的时间为STi,离开的时间为EDi。一位客人坐一张凳子。你能告诉天坑他最少需要准备多少张凳子才能满足所有客人到达时都有凳子坐。Input
测试文件的第一行有一个正整数T,代表一共有T组测试数据。每组测试数据的第一行有1个正整数n(1<=n<=1000)代表今天一共有n组客人来吃饭。
接下来n行,每行有一个正整数Xi(1<=Xi<=100)代表该组客人一共有Xi位客人以及两个时间(hh:mm表示,0<=hh<24,0<=mm<60,第一个时间一定不晚于第二个时间)分别代表该组客人到达的时间和离开的时间。
Output
对于每组测试数据,输出一个答案代表天坑最少需要准备的凳子数。Sample Input
22
6 08:00 09:00
5 08:59 09:59
2
6 08:00 09:00
5 09:00 10:00
Sample Output
116
【解析】
这道题时间处理需要注意还有就是我们怎么算凳子要多少张,我们可以开一个数组,开始时间所对应的下标赋值为负数,而结束时间对应的则为正数,如果现在拥有的凳子数
是负数则要将总数加上这个负数的绝对值,然后再把现在有的凳子清空,这样的话我们可以就可以很好的得出需要多少张意思就是我们在哪个时间段有多少张桌子我们都可以
知道,比如样例1,800时有-6张凳子,900有6张凳子了,859的时候有-5张,959要5张。这样总共需要11张,样例2的800就有-6张,900为6,这个时候900其实已经已经剪去了5也就是说还需要1张,1000的时候有5张大概就是这个意思。
#include <iostream> #include<vector> #include<string> #include<cstdio> using namespace std; int main() { int n,m,k,a,b,c,w,sum; scanf("%d",&n); while (n--) { int pre[3000]={0}; scanf("%d",&m); for (int i=0;i<m;i++) { scanf("%d %d:%d",&a,&b,&c); k=b*100+c; pre[k]-=a; scanf("%d:%d",&b,&c); k=b*100+c; pre[k]+=a; } sum=0; w=0; for (int i=0;i<=2400;i++) { w+=pre[i]; if (w<0) { sum=sum+(-w); w=0; } } printf("%d\n",sum); } return 0; }
相关文章推荐
- ZCMU—1478
- 学习笔记V——由 woj 1478 Key Logger 想到的list效率问题
- POJ 1478
- zcmu1692
- zcmu 1615: 找区间
- ZCMU—1404
- ZCMU—1487
- ZCMU—1053
- ZCMU—1597
- ZCMU-1132
- ZCMU-1165-dp
- ZCMU-1492-石头(dp,dfs)
- ZCMU-1435-盟国
- ZCMU-1347-又是斐波那契数列
- ZCMU-1757-内部收益率
- ZCMU-训练赛-A
- ZCMU-1231-Antimonotonicity
- ZCMU-1819-传球游戏
- ZCMU-1863-zbj的长跑
- poj2550&&zcmu1867——Zipf's Law