题意:将n个任务分配为m个机器,给每个任务需要的天数(无需每天连续),和可以在哪些天去做该任务,求是否存在方案。

典型的任务(X)----天(Y)二分最大流,(因为这里任务是与天的关系)处理器控制流量,源点向X部点,指需要的天数,任务xi,向可以做的天连,流量1,每个Y部点向汇点连流量为m,表示该天最多用M个机器。

ps:注意输出格式

  1. #include<iostream>
  2. #include<queue>
  3. #include<cstdio>
  4. #include<cstring>
  5. using namespace std;
  6. const int inf=0x3f3f3f3f;
  7. const int maxv=1001,maxe=200101;
  8. int nume=0;int head[maxv];int e[maxe][3];
  9. void inline adde(int i,int j,int c)
  10. {
  11. e[nume][0]=j;e[nume][1]=head[i];head[i]=nume;
  12. e[nume++][2]=c;
  13. e[nume][0]=i;e[nume][1]=head[j];head[j]=nume;
  14. e[nume++][2]=0;
  15. }
  16. int ss,tt,n,m,all;
  17. int vis[maxv];int lev[maxv];
  18. bool bfs()
  19. {
  20. for(int i=0;i<maxv;i++)
  21. vis[i]=lev[i]=0;
  22. queue<int>q;
  23. q.push(ss);
  24. vis[ss]=1;
  25. while(!q.empty())
  26. {
  27. int cur=q.front();
  28. q.pop();
  29. for(int i=head[cur];i!=-1;i=e[i][1])
  30. {
  31. int v=e[i][0];
  32. if(!vis[v]&&e[i][2]>0)
  33. {
  34. lev[v]=lev[cur]+1;
  35. vis[v]=1;
  36. q.push(v);
  37. }
  38. }
  39. }
  40. return vis[tt];
  41. }
  42. int dfs(int u,int minf)
  43. {
  44. if(u==tt||minf==0)return minf;
  45. int sumf=0,f;
  46. for(int i=head[u];i!=-1&&minf;i=e[i][1])
  47. {
  48. int v=e[i][0];
  49. if(lev[v]==lev[u]+1&&e[i][2]>0)
  50. {
  51. f=dfs(v,minf<e[i][2]?minf:e[i][2]);
  52. e[i][2]-=f;e[i^1][2]+=f;
  53. sumf+=f;minf-=f;
  54. }
  55. }
  56. if(!sumf) lev[u]=-1;
  57. return sumf;
  58. }
  59. int dinic()
  60. {
  61. int sum=0;
  62. while(bfs())sum+=dfs(ss,inf);
  63. return sum;
  64. }
  65. void read_build()
  66. {
  67. int pi,si,ei;
  68. for(int i=1;i<=n;i++)
  69. {
  70. scanf("%d%d%d",&pi,&si,&ei);
  71. all+=pi;
  72. adde(ss,i,pi);
  73. for(int j=si;j<=ei;j++)
  74. {
  75. adde(i,n+j,1);
  76. }
  77. }
  78. for(int i=1;i<=500;i++)
  79. {
  80. adde(i+n,tt,m);
  81. }
  82. }
  83. void init()
  84. {
  85. scanf("%d%d",&n,&m);
  86. nume=0;all=0;
  87. memset(head,-1,sizeof(head));
  88. ss=n+501;tt=n+502;
  89. }
  90. int main()
  91. {
  92. int T;
  93. scanf("%d",&T);int ct=1;
  94. while(T--)
  95. {
  96. init();
  97. read_build();
  98. int ans=dinic();
  99. if(ans==all)printf("Case %d: Yes\n\n",ct++);
  100. else printf("Case %d: No\n\n",ct++);
  101. }
  102. }

hdu3572 任务分配/最大流判断满流的更多相关文章

  1. HDU2883 kebab(最大流判断满流 + 离散化 + 区间化点)

    [题意]: 有一个烤箱,烤箱在一个时刻最多考M个肉串,N个顾客,每个顾客有属性s,n,e,t s是来的时间,n是想要的肉串数量,e是最晚离开的时间,t是烤的时间(几分熟). 顾客的烤肉可以分开烤,比如 ...

  2. hdu 3572 最大流判断满流

    #include<stdio.h> #include<string.h> #include<queue> using namespace std; #define ...

  3. hdu-3572 Task Schedule---最大流判断满流+dinic算法

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3572 题目大意: 给N个任务,M台机器.每个任务有最早才能开始做的时间S,deadline E,和持 ...

  4. HDU 3572 Task Schedule(最大流判断满流)

    https://vjudge.net/problem/HDU-3572 题意: 有N个作业和M台机器,每个作业都有一个持续时间P,工作的日期为S~E.作业可以断断续续的在不同机器上做,每台机器每次只可 ...

  5. hdu3572Task Schedule 最大流,判断满流 优化的SAP算法

    PS:多校联赛的题目质量还是挺高的.建图不会啊,看了题解才会的. 参考博客:http://blog.csdn.net/luyuncheng/article/details/7944417 看了上面博客 ...

  6. hdu2883 最大流,判断满流 优化的SAP算法

    这是09年的多校联赛题目,比10年的难度要大.如果没做过hdu3572,建议先去做.有了解题思维再来做这题. 这题与hdu3572类似.但是1 <= si < ei <= 1,000 ...

  7. HDU3605 Escape(最大流判满流 + 状压)

    [题意]: 有N个人,M个星球,给N*M矩阵,(i, j)为1代表i可以到j星球,0代表不能,问是否能把所有人转移走. [思路]: N的范围为1e6,如果让每个人与星球连边一定TLE,再根据矩阵每一行 ...

  8. poj--1637--Sightseeing tour(网络流,最大流判断混合图是否存在欧拉图)

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000KB   64bit IO Format: %I64d & %I64u Sub ...

  9. hdu4888 多校B 最大流以及最大流唯一判断+输出方案

    题意,给一个矩阵,告诉你每行和.每列和,并且限制所填数不大于k,问矩阵是否唯一. 经典建图不说了,第一次遇到判断最大流唯一性的,学习了:用dfs来判断残网中是否还存在环,若存在,则表明绕这个环走一圈, ...

随机推荐

  1. pythonnet-网络编程(1)

    python的网络编程有不少难点,也容易忘记,最近我会陆续发出系统.完整pythonnet知识的博客,一边复习一边分享,感兴趣的可以关注我. 话不多说,开始吧. 网络编程 目的:数据的传输 ISO(国 ...

  2. 【Python学习之五】高级特性2(切片、迭代、列表生成器、生成器、迭代器)

    2.迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration).在Python中,迭代是通过for ... in来完成的. ...

  3. Fedora 28 系统基础配置以及常用软件安装方式

    实验说明: 很多人说Linux很难用,很难上手,其实不然,倘若不玩游戏,其实很多发行版Linux都可以成为主力系统,就比如本章要讲的 Fedora 28.本章会从镜像来源.系统安装.基础配置和常用软件 ...

  4. CSS基础(一)

    一.CSS概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表 ...

  5. Python基础-函数参数

    Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...

  6. Java底层基础题

    一.Java底层基础题 1.SpringMVC的原理以及返回数据如何渲染到jsp/html上? 答:Spring MVC的核心就是DispatcherServlet , 一个请求经过Dispatche ...

  7. HDU 2460 Network 边双连通分量 缩点

    题意: 给出一个无向连通图,有\(m\)次操作,每次在\(u, v\)之间加一条边,并输出此时图中桥的个数. 分析: 先找出边双连通分量然后缩点得到一棵树,树上的每条边都输原图中的桥,因此此时桥的个数 ...

  8. (转)全网最!详!细!tarjan算法讲解

    byhttp://www.cnblogs.com/uncle-lu/p/5876729.html 全网最详细tarjan算法讲解,我不敢说别的.反正其他tarjan算法讲解,我看了半天才看懂.我写的这 ...

  9. 详解Python中的相对导入和绝对导入

    Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的.包内导入即是包内的模块导入包内部的模块. Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONP ...

  10. poj2449 Remmarguts' Date K短路 A*

    K短路裸题. #include <algorithm> #include <iostream> #include <cstring> #include <cs ...