ZOJ 3787 Access System
来源:互联网 发布:反杀电影 知乎 编辑:程序博客网 时间:2024/05/18 06:31
ZOJ 3787 Access System
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3787
2014 第十一届浙江省赛 L
题目大意:进门系统模拟。进宿舍门要刷身份卡,但是有人刷卡进了门,L秒之内想进的人就不需要刷了,大家都很懒,能不刷就不刷。给出n个人的到来时间(无序),和刷卡后门会保持开启状态的时间,问哪些人需要刷卡(按给出的顺序算)。
题目分析:结构体存,时间存在一个整数里,另外就是记录给出时的编号和是否需要刷卡的布尔变量。按到来时间排序后顺着刷一遍,得到每个人是否需要刷卡的结果(注意无论如何第一个人是要刷的),然后再按给出顺序排回来输出。
code:
#include<cstdio>#include<algorithm>using namespace std;struct stu{ int time,num; bool need;}a[20010];bool cmp1(stu a,stu b){ return a.time<b.time;}bool cmp2(stu a,stu b){ return a.num<b.num;}int main(){ int i,j,h,m,s,n,l,t,k,sum; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&l); for(i=0;i<n;i++) { scanf("%d:%d:%d",&h,&m,&s); a[i].time=(60*h+m)*60+s; a[i].num=i+1; } sort(a,a+n,cmp1); a[0].need=true; for(sum=i=1,j=a[0].time;i<n;i++) { if(a[i].time>=j+l) { a[i].need=true; j=a[i].time; sum++; } else a[i].need=false; } sort(a,a+n,cmp2); printf("%d\n",sum--); for(i=0;i<n;i++) { if(a[i].need) {printf("%d%s",a[i].num,sum==0?"\n":" ");sum--;} } } return 0;}/*32 112:30:0012:30:015 1517:00:0017:00:1517:00:0617:01:0017:00:143 512:00:0912:00:0512:00:00*/
PS:1A
0 0
- ZOJ 3787 Access System
- ZOJ 3787 Access System
- ZOJ 3787 Access System
- ZOJ 3787 Access System
- zoj 3787 Access System
- ZOJ 3787 Access System
- ZOJ 3787 Access System
- ZOJ 3787 Access System
- ZOJ 3787 Access System 模拟
- ZOJ 3787Access System(排序)
- ZOJ Access System
- ZOJ-3787-Access System【11th浙江省赛】
- Access System
- Access System
- Access System
- zoj 1088 System Overload
- zoj-1088-System Overload
- zoj 1409 Communication System
- 【Ruby】Win8.1 + VS2013 环境编译 Ruby 2.1.1
- linux服务之Open SSH服务
- IOS开发:解析服务器端的json数据
- STM32F103RBT6+DM9000CEP+UIP Telnet功能实现,工程文件下载
- 面试经典(10)--归并排序
- ZOJ 3787 Access System
- 不同项目中按钮传递事件
- 云平台openstack中,cloudinit安装、使用
- FQDN (fully qualified domain name,完全限定域名)
- 注意!Gradle的Android插件不支持Java8!(可能包括Maven等等)
- python中文编码问题
- hibernate缓存
- Perl 网络编程socket练习(三)
- 【三个水杯 NYOJ 21 广搜】