时间限制: 
1000ms 
内存限制: 
65536kB
描述

百度百科有一支神奇的队伍,他们叫自己“百科蝌蚪团”。为了更好的让蝌蚪团的成员们安排工作,百度百科的运营团队定出了一个24小时制的时间表。例如:
1.    每个蝌蚪团成员工作时长相同;
2.    必须安排蝌蚪团成员在他们方便的时间段工作;
3.    蝌蚪团成员安排时间最小安排时间节点(开始工作或停止工作)为半小时,比如04:00或04:30,而不是04:15;
4.    蝌蚪团成员一天在百度百科工作的时间是有上限的,他们会根据自己的情况给出上限。
5.    在特定时间段内必须有一定数量的蝌蚪团成员工作,以保证百度百科不断的进步
请帮运营团队计算一下,能保持24小时稳定在岗的蝌蚪团最少成员的数量。如果有2个蝌蚪团成员工作结束,同时另2个蝌蚪团成员开始工作,这段时间都算有2各成员稳定在岗。

输入
输入有多组,每组测试数据以一个整数N开头(1 ≤ N ≤ 50),表示蝌蚪团的成员数。紧接着,我们会有N个数据块,每一个数据块对应了一名蝌蚪团成员的日程情况。
每个数据块以两个整数开始,分别为K(1 ≤ K ≤ 50)和M(1 ≤ M ≤ 1440),用空格隔开。K表示这个数据块对应蝌蚪团成员方便的时间段的数量,M表示这个成员愿意每天在百度百科工作的最长分钟数。接下去的K行中,每行包括两个时间,分别表示成“HH:MM”的格式,以空格分隔,分别对应了该蝌蚪团成员一个方便的时间段的开始时间、结束时间;例如09:00 10:00表明他在早上九点到十点的时间段是方便的,可以在百度百科工作。如果两个时间相同,则说明这个他全天都是方便的。
最后一组数据的N为0,表示输入结束。
输出
对于每组数据,输出为一个整数,占一行。表示能保持24小时稳定在岗的蝌蚪团最少成员的数量。
样例输入
5
1 720
18:00 12:00
1 1080
00:00 23:00
1 1080
00:00 20:00
1 1050
06:00 00:00
1 360
18:00 00:00
3
1 540
00:00 00:00
3 480
08:00 10:00
09:00 12:00
13:00 19:00
1 420
17:00 00:00
3
1 1440
00:00 00:00
1 720
00:00 12:15
1 720
12:05 00:15
0
样例输出
2
1
1
#include<stdio.h>#include<memory.h>#include<stdlib.h>#define maxn 102int d[maxn],g[maxn][maxn],f[maxn][maxn],pre[maxn],map[maxn][maxn],sum[maxn],current[maxn];int n,m,num,mm;struct node{int x,y;}seg[1000],time[1000];#define oo 0xfffffffint cmp(const void *a,const void *b){struct node *va=(struct node*)a;struct node *vb=(struct node*)b;return va->x-vb->x;}void rev_bfs(int t){int queue[maxn],flag[maxn];int head,tail,i;memset(sum,0,sizeof(sum));for (i=0;i<=n+49;i++){d[i]=n+49;sum[n+49]++;}sum[n+49]--;sum[0]++;d[t]=0;queue[1]=t;flag[t]=1;head=1;tail=1;memset(flag,0,sizeof(flag));while (head<=tail){for (i=0;i<=n+49;i++)if (flag[i]==0&&g[i][queue[head]]>0){queue[++tail]=i;d[i]=d[queue[head]]+1;sum[n+49]--;sum[d[i]]++;flag[i]=1;}head++;}}void augment(int s,int t){int i,min;min=oo;for (i=t;i!=s;i=pre[i])if (g[pre[i]][i]<min)min=g[pre[i]][i];for (i=t;i!=s;i=pre[i]){g[pre[i]][i]-=min;;g[i][pre[i]]+=min;f[pre[i]][i]+=min;f[i][pre[i]]-=min;}}int retreat(int *u,int s){int v,min;min=n+49;for (v=0;v<=n+49;v++)if (g[*u][v]>0&&d[v]<min)min=d[v];sum[d[*u]]--;if ((sum[d[*u]])==0&&d[*u]<=n+49) return 0;d[*u]=min+1;sum[d[*u]]++;current[*u]=0;if (*u!=s) *u=pre[*u];return 1;}void ISAP(int s,int t){int u,v;rev_bfs(t);u=s;while (d[s]<n+50){ for (v=current[u];v<=n+49;v++) if (g[u][v]>0&&d[u]==d[v]+1)break;if (v<=n+49){current[u]=v;pre[v]=u;u=v;if (u==t){augment(s,t);u=s;}}else if (retreat(&u,s)==0) return;}}void init(){int i,j,a,b,c,d,min,t,k,ans,max,st,en,temp;while (scanf("%d",&n)!=EOF&&n){memset(map,0,sizeof(map));;for (i=1;i<=n;i++){scanf("%d%d",&m,&t);map[48][i+48]=t/30;num=0;mm=0;for (j=1;j<=m;j++){scanf("%d:%d %d:%d",&a,&b,&c,&d);if (a==c&&b==d){for (k=0;k<48;k++)map[i+48][k]=1;continue;}if (c==0&&d==0){num++;seg[num].x=a*60+b;seg[num].y=1440;}else if (a*60+b>c*60+d){num++;seg[num].x=a*60+b;seg[num].y=1440;num++;seg[num].x=0;seg[num].y=c*60+d;}else{num++;seg[num].x=a*60+b;seg[num].y=c*60+d;}}if (num==0) continue;qsort(seg+1,num,sizeof(seg[1]),cmp);st=seg[1].x;en=seg[1].y;seg[num+1].x=1500;seg[num+1].y=1600;for (j=2;j<=num+1;j++){a=seg[j].x;b=seg[j].y;if (st<=a&&a<=en&&en<b)en=b;else if (a>en){mm++;time[mm].x=st;time[mm].y=en;st=a;en=b;}}for (j=1;j<=mm;j++){a=time[j].x/60;b=time[j].x-60*a;c=time[j].y/60;d=time[j].y-60*c;if (a==c){if (b==0&&d>=30)map[i+48][a*2]=1;}else{if (b>0&&b<=30) b=30;if (b>30) {a++;b=0;}if (d<30) d=0;if (d>30) d=30;while (a!=c||b!=d){map[i+48][a*2+b/30]=1;b+=30;if (b==60){a++;b=0;}}}}}max=oo;for (j=0;j<48;j++){temp=0;for (k=49;k<n+49;k++)if (map[k][j]>0) temp++;if (temp<max)max=temp;}ans=0;for (j=1;j<=max;j++){memset(g,0,sizeof(g));memset(f,0,sizeof(f));memset(current,0,sizeof(current));for (i=0;i<=49+n;i++)for (k=0;k<=49+n;k++)g[i][k]=map[i][k];for (i=0;i<48;i++)g[i][n+49]=j;ISAP(48,n+49);min=oo;for (i=0;i<48;i++)if (f[i][n+49]<min)min=f[i][n+49];if (min>ans) ans=min;}printf("%d\n",ans);}}int main(){//freopen("a.txt","r",stdin);//freopen("b.txt","w",stdout);init();return 0;}

转载于:https://www.cnblogs.com/secbook/archive/2012/05/30/2654997.html

【2012百度之星资格赛】F:百科蝌蚪团相关推荐

  1. 【2012百度之星/资格赛】F:百科蝌蚪团

    时间限制: 1000ms      内存限制: 65536kB 描述 百度百科有一支神奇的队伍,他们叫自己"百科蝌蚪团".为了更好的让蝌蚪团的成员们安排工作,百度百科的运营团队定出 ...

  2. 【2012百度之星资格赛】E:C++ 与Java

    时间限制:  2000ms  内存限制:  65536kB 描述 在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时.Java的爱好者会说他们的程序更加整洁 ...

  3. 【2012百度之星/资格赛】E:C++ 与Java

    时间限制:2000ms       内存限制:65536kB 描述 在百度之星的贴吧里面,Java的爱好者和C++的爱好者总是能为这两种语言哪个更好争论上几个小时.Java的爱好者会说他们的程序更加整 ...

  4. 【2012百度之星/资格赛】H:用户请求中的品牌 [后缀数组]

    时间限制: 1000ms 内存限制: 65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johnsonj ...

  5. 【2012百度之星资格赛】G:聊天就是Repeat

    时间限制:  1000ms  内存限制:  65536kB 描述 百度Hi作为百度旗下的即时聊天工具,在百度公司内部很是流行.要实现这样的一个聊天工具,最重要的问题就是要能保证我发出的内容能原封不动的 ...

  6. 【2012百度之星/资格赛】J:百度的新大厦

    描述 继百度搜索框大厦之后,百度又于2012年初在深圳奠基了新的百度国际大厦,作为未来百度国际化的桥头堡.不同于百度在北京的搜索框大厦,新的百度国际大厦是一栋高楼,有非常多的楼层,让每个楼中的电梯都能 ...

  7. 【2012百度之星/资格赛】H:用户请求中的品牌

    时间限制:  1000ms  内存限制:  65536kB 描述 馅饼同学是一个在百度工作,做用户请求(query)分析的同学,他在用户请求中经常会遇到一些很奇葩的词汇.在比方说"johns ...

  8. 【2012百度之星资格赛】J:百度的新大厦

    时间限制:  1000ms  内存限制:  65536kB 描述 继百度搜索框大厦之后,百度又于2012年初在深圳奠基了新的百度国际大厦,作为未来百度国际化的桥头堡.不同于百度在北京的搜索框大厦,新的 ...

  9. 【2012百度之星 / 资格赛】I:地图的省钱计划

    描述 百度地图有自己的一套坐标系(你可以把它看作一个笛卡尔坐标系),在这套坐标系里,一个标准单位为1km.而在这坐标系上针对地理信息进行标注的数据,大多数时候是通过购买的方式完成的.为了节约数据更新的 ...

最新文章

  1. 贾跃亭晒FF 91新图,“生态化反”到底凉没凉?
  2. 图像浏览软件_FastStone Image Viewer5.5版
  3. 有的OUTLOOK不能自动加载归档ARCHIVE邮件的问题
  4. go语言笔记——append底层实现和Cpp vector无异,只是有返回值,double后返回了新的vector地址而已...
  5. MariaDB(MySQL)_MariaDB(Mysql)-主从搭建
  6. 事件标志组的等待与通知
  7. 错误日志的实时抓取保证代码质量
  8. 聚类dbi指数_人脸聚类常用评价指标
  9. PHP对抗web扫描器的脚本技巧
  10. 非常实用的Asp.net常用的51个代码
  11. 开源十问, 社区新人快速上手指南
  12. 【转】Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
  13. jQuery学习笔记(4)-设置元素的属性和样式
  14. 菜鸟学习初级教程-----强烈推荐(看完后成黑客拉)
  15. Axure_RP8.0软件+汉化包
  16. 【微信小程序|组件库】一款清新且简洁的卡片样式
  17. 火狐浏览器打开IE窗口/IE跳谷歌页面等 --- 自定义协议---手动执行注册表
  18. Intellij IDEA 配置Git并拉取项目
  19. 数据库系统概论笔记——第一章
  20. 指针知识点总结(C语言)

热门文章

  1. SolarWinds 公司:Web Help Desk 实例正遭攻击
  2. 黑客声称攻陷并加密白俄罗斯国家铁路的服务器
  3. SourceTree 免注册
  4. java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠,该怎么解决
  5. C#中Math.Round()实现中国式四舍五入
  6. javaWeb项目中web.xml的xsd( XML Schemas Definition)文件
  7. unicode和MBCS(多字节字符集)的关系
  8. python解压缩tar.gz文件
  9. Spring 事务传播原理及数据库事务操作原理
  10. L3-012 水果忍者 (30 分)-PAT 团体程序设计天梯赛 GPLT