hdu3572
题解:
网络流
判断是否为漫流
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
const int INF=1e9,N=,M=,FIN=;
typedef long long ll;
int n,m,s,t,sum,ec,head[N],first[N],que[N],lev[N],Next[M],to[M],v[M];
void init()
{
sum=ec=;
memset(first,-,sizeof(first));
s=,t=FIN;
}
void addEdge(int a,int b,int c)
{
to[ec]=b;
v[ec]=c;
Next[ec]=first[a];
first[a]=ec++;
to[ec]=a;
v[ec]=;
Next[ec]=first[b];
first[b]=ec++;
}
int BFS()
{
int kid,now,f=,r=;
memset(lev,,sizeof(lev));
que[]=s,lev[s]=;
while (f<r)
{
now=que[f++];
for (int i=first[now];i!=-;i=Next[i])
{
kid=to[i];
if (!lev[kid]&&v[i])
{
lev[kid]=lev[now]+;
if (kid==t)return ;
que[r++]=kid;
}
}
}
return ;
}
int DFS(int now, int sum)
{
int kid,flow,rt=;
if (now==t) return sum;
for (int i=head[now];i!=-&&rt<sum;i=Next[i])
{
head[now]=i;
kid=to[i];
if (lev[kid]==lev[now]+&&v[i])
{
flow=DFS(kid,min(sum-rt,v[i]));
if (flow)
{
v[i]-=flow;
v[i^]+=flow;
rt+=flow;
}
else lev[kid]=-;
}
}
return rt;
}
int dinic()
{
int ans=;
while (BFS())
{
for (int i=;i<=t;i++)head[i]=first[i];
ans+=DFS(s,INF);
}
return ans;
}
void input()
{
int Min=INF,Max=;
scanf("%d%d",&n,&m);
int a,b,c;
for (int i=;i<=n;i++)
{
scanf("%d%d%d",&a,&b,&c);
sum+=a;
addEdge(s,i,a);
for (int j=b;j<=c;j++)addEdge(i,j+n,);
if (c<b)swap(c,b);
if (Min>b)Min=b;
if (Max<c)Max=c;
}
for (int i=Min;i<=Max;i++)addEdge(i+n,t,m);
}
int main()
{
int T,Case=;
scanf("%d",&T);
while (T--)
{
printf("Case %d: ",Case++);
init();
input();
if (dinic()==sum) puts("Yes");
else puts("No");
puts("");
}
return ;
}
hdu3572的更多相关文章
- hdu3572 最大流
Task Schedule Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submi ...
- HDU3572 Task Schedule 【最大流】
Task Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- 【最大流】【HDU3572】Task Schedule
题意: 有N个事件,M台机器.事件有开始时间,持续时间,要在结束时间之前完成,问是否能完成所有事件? 非自己思考出来的 建图:把每个任务和每一天都看做一个点,添加源点和汇点.源点与每个任务之间连一条边 ...
- hdu3572 任务分配/最大流量推论全流
意甲冠军:将n分配的任务m机.到的每个任务需要的天数(如果没有持续的日常),并能做到在哪些天任务.询问是否有计划. 典型的任务(X)----日(Y)一半的最大流量,(因为这个任务是天之间的关系)处理器 ...
- HDU3572构造图的模型
第一次面对建模的图,也映照了我以前想的算法不是重点,问题的转化才是重点 Description: N个任务,M台机器,对于每一个任务有p,s,e表示该任务要做p个时长,要从[s,……)开始,从(……e ...
- hdu3572线性欧拉筛
用线性筛来筛,复杂度O(n) #include<bits/stdc++.h> #include<ext/rope> #define fi first #define se se ...
- hdu-3572 Task Schedule---最大流判断满流+dinic算法
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3572 题目大意: 给N个任务,M台机器.每个任务有最早才能开始做的时间S,deadline E,和持 ...
- hdu3572 任务分配/最大流判断满流
题意:将n个任务分配为m个机器,给每个任务需要的天数(无需每天连续),和可以在哪些天去做该任务,求是否存在方案. 典型的任务(X)----天(Y)二分最大流,(因为这里任务是与天的关系)处理器控制流量 ...
- HDU3572:Task Schedule【最大流】
上了一天课 心塞塞的 果然像刘老师那么说 如果你有挂科+4级没过 那基本上是WF队 题目大意:有时间补吧 思路:给每个任务向每个时间点连边容量为1 每个时间点向汇点连边 容量为机器的个数 源点向每个任 ...
随机推荐
- receive.denyCurrentBranch 推送错误解决
场景: 1.搭建Ok了一git服务器 2.本机上的现有源码,现在想纳入git源码管理 操作: 1.服务器上创建了工程仓库 git init 2. 客户端使用tortoisegit添加并提交要纳入源码管 ...
- 基于 Spark 的文本情感分析
转载自:https://www.ibm.com/developerworks/cn/cognitive/library/cc-1606-spark-seniment-analysis/index.ht ...
- HDU5139:Formula(找规律+离线处理)
http://acm.hdu.edu.cn/showproblem.php?pid=5139 Problem Description f(n)=(∏i=1nin−i+1)%1000000007You ...
- 3.10 Templates -- Development Helpers
一.Development Helpers Handlebar和Ember有好多个辅助器可以使模板开发更容易. 这些辅助器输出变量到浏览器的控制台,或者从模板中激活debugger. 二.Loggin ...
- WdatePicker显示乱码
1.修改zh-cn.js内容: var $lang={ errAlertMsg: "不合法的日期格式或者日期超出限定范围,需要撤销吗?", aWeekStr: ["周&q ...
- Core Java 4
p272~p273 1.除捕获异常外的另一种异常处理方式:将异常继续传递给方法调用者. 即:在方法首部添加throws说明符号,取代 try catch语句. 对于方法的调用者而言:要么处理异常,要么 ...
- Python3.6(windows系统)安装pip.whl
Python3.6(windows系统)安装pip.whl 1,下载whl文件:https://pypi.python.org/pypi/pip#downloads 2,将下载的文件放入Python的 ...
- 2017-2018-1 JaWorld 团队作业--冲刺3
2017-2018-1 JaWorld 团队作业--冲刺3 (20162306) 总体架构 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏 游戏中所有模型的原型设定是精灵,因 ...
- python中模块导入问题(已解决)
想在python中导入request包: 无此模块,于是先安装requests包: 但是提示"Requirement already satisfied".在提示的相应目录里,找到 ...
- Jenkins报错Error cloning remote repo 'origin'
Jenkins控制台输出报错 输出ERROR: Error cloning remote repo 'origin' 这行报错只能说明是git有问题,其他没什么有用的信息. 浏览器中Ctrl+F查找E ...