hdu3572 任务分配/最大流判断满流
题意:将n个任务分配为m个机器,给每个任务需要的天数(无需每天连续),和可以在哪些天去做该任务,求是否存在方案。
典型的任务(X)----天(Y)二分最大流,(因为这里任务是与天的关系)处理器控制流量,源点向X部点,指需要的天数,任务xi,向可以做的天连,流量1,每个Y部点向汇点连流量为m,表示该天最多用M个机器。
ps:注意输出格式
- #include<iostream>
- #include<queue>
- #include<cstdio>
- #include<cstring>
- using namespace std;
- const int inf=0x3f3f3f3f;
- const int maxv=1001,maxe=200101;
- int nume=0;int head[maxv];int e[maxe][3];
- void inline adde(int i,int j,int c)
- {
- e[nume][0]=j;e[nume][1]=head[i];head[i]=nume;
- e[nume++][2]=c;
- e[nume][0]=i;e[nume][1]=head[j];head[j]=nume;
- e[nume++][2]=0;
- }
- int ss,tt,n,m,all;
- int vis[maxv];int lev[maxv];
- bool bfs()
- {
- for(int i=0;i<maxv;i++)
- vis[i]=lev[i]=0;
- queue<int>q;
- q.push(ss);
- vis[ss]=1;
- while(!q.empty())
- {
- int cur=q.front();
- q.pop();
- for(int i=head[cur];i!=-1;i=e[i][1])
- {
- int v=e[i][0];
- if(!vis[v]&&e[i][2]>0)
- {
- lev[v]=lev[cur]+1;
- vis[v]=1;
- q.push(v);
- }
- }
- }
- return vis[tt];
- }
- int dfs(int u,int minf)
- {
- if(u==tt||minf==0)return minf;
- int sumf=0,f;
- for(int i=head[u];i!=-1&&minf;i=e[i][1])
- {
- int v=e[i][0];
- if(lev[v]==lev[u]+1&&e[i][2]>0)
- {
- f=dfs(v,minf<e[i][2]?minf:e[i][2]);
- e[i][2]-=f;e[i^1][2]+=f;
- sumf+=f;minf-=f;
- }
- }
- if(!sumf) lev[u]=-1;
- return sumf;
- }
- int dinic()
- {
- int sum=0;
- while(bfs())sum+=dfs(ss,inf);
- return sum;
- }
- void read_build()
- {
- int pi,si,ei;
- for(int i=1;i<=n;i++)
- {
- scanf("%d%d%d",&pi,&si,&ei);
- all+=pi;
- adde(ss,i,pi);
- for(int j=si;j<=ei;j++)
- {
- adde(i,n+j,1);
- }
- }
- for(int i=1;i<=500;i++)
- {
- adde(i+n,tt,m);
- }
- }
- void init()
- {
- scanf("%d%d",&n,&m);
- nume=0;all=0;
- memset(head,-1,sizeof(head));
- ss=n+501;tt=n+502;
- }
- int main()
- {
- int T;
- scanf("%d",&T);int ct=1;
- while(T--)
- {
- init();
- read_build();
- int ans=dinic();
- if(ans==all)printf("Case %d: Yes\n\n",ct++);
- else printf("Case %d: No\n\n",ct++);
- }
- }
hdu3572 任务分配/最大流判断满流的更多相关文章
- HDU2883 kebab(最大流判断满流 + 离散化 + 区间化点)
[题意]: 有一个烤箱,烤箱在一个时刻最多考M个肉串,N个顾客,每个顾客有属性s,n,e,t s是来的时间,n是想要的肉串数量,e是最晚离开的时间,t是烤的时间(几分熟). 顾客的烤肉可以分开烤,比如 ...
- hdu 3572 最大流判断满流
#include<stdio.h> #include<string.h> #include<queue> using namespace std; #define ...
- hdu-3572 Task Schedule---最大流判断满流+dinic算法
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3572 题目大意: 给N个任务,M台机器.每个任务有最早才能开始做的时间S,deadline E,和持 ...
- HDU 3572 Task Schedule(最大流判断满流)
https://vjudge.net/problem/HDU-3572 题意: 有N个作业和M台机器,每个作业都有一个持续时间P,工作的日期为S~E.作业可以断断续续的在不同机器上做,每台机器每次只可 ...
- hdu3572Task Schedule 最大流,判断满流 优化的SAP算法
PS:多校联赛的题目质量还是挺高的.建图不会啊,看了题解才会的. 参考博客:http://blog.csdn.net/luyuncheng/article/details/7944417 看了上面博客 ...
- hdu2883 最大流,判断满流 优化的SAP算法
这是09年的多校联赛题目,比10年的难度要大.如果没做过hdu3572,建议先去做.有了解题思维再来做这题. 这题与hdu3572类似.但是1 <= si < ei <= 1,000 ...
- HDU3605 Escape(最大流判满流 + 状压)
[题意]: 有N个人,M个星球,给N*M矩阵,(i, j)为1代表i可以到j星球,0代表不能,问是否能把所有人转移走. [思路]: N的范围为1e6,如果让每个人与星球连边一定TLE,再根据矩阵每一行 ...
- poj--1637--Sightseeing tour(网络流,最大流判断混合图是否存在欧拉图)
Sightseeing tour Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u Sub ...
- hdu4888 多校B 最大流以及最大流唯一判断+输出方案
题意,给一个矩阵,告诉你每行和.每列和,并且限制所填数不大于k,问矩阵是否唯一. 经典建图不说了,第一次遇到判断最大流唯一性的,学习了:用dfs来判断残网中是否还存在环,若存在,则表明绕这个环走一圈, ...
随机推荐
- pythonnet-网络编程(1)
python的网络编程有不少难点,也容易忘记,最近我会陆续发出系统.完整pythonnet知识的博客,一边复习一边分享,感兴趣的可以关注我. 话不多说,开始吧. 网络编程 目的:数据的传输 ISO(国 ...
- 【Python学习之五】高级特性2(切片、迭代、列表生成器、生成器、迭代器)
2.迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration).在Python中,迭代是通过for ... in来完成的. ...
- Fedora 28 系统基础配置以及常用软件安装方式
实验说明: 很多人说Linux很难用,很难上手,其实不然,倘若不玩游戏,其实很多发行版Linux都可以成为主力系统,就比如本章要讲的 Fedora 28.本章会从镜像来源.系统安装.基础配置和常用软件 ...
- CSS基础(一)
一.CSS概述 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与表 ...
- Python基础-函数参数
Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...
- Java底层基础题
一.Java底层基础题 1.SpringMVC的原理以及返回数据如何渲染到jsp/html上? 答:Spring MVC的核心就是DispatcherServlet , 一个请求经过Dispatche ...
- HDU 2460 Network 边双连通分量 缩点
题意: 给出一个无向连通图,有\(m\)次操作,每次在\(u, v\)之间加一条边,并输出此时图中桥的个数. 分析: 先找出边双连通分量然后缩点得到一棵树,树上的每条边都输原图中的桥,因此此时桥的个数 ...
- (转)全网最!详!细!tarjan算法讲解
byhttp://www.cnblogs.com/uncle-lu/p/5876729.html 全网最详细tarjan算法讲解,我不敢说别的.反正其他tarjan算法讲解,我看了半天才看懂.我写的这 ...
- 详解Python中的相对导入和绝对导入
Python 相对导入与绝对导入,这两个概念是相对于包内导入而言的.包内导入即是包内的模块导入包内部的模块. Python import 的搜索路径 在当前目录下搜索该模块 在环境变量 PYTHONP ...
- poj2449 Remmarguts' Date K短路 A*
K短路裸题. #include <algorithm> #include <iostream> #include <cstring> #include <cs ...