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 每个时间点向汇点连边 容量为机器的个数 源点向每个任 ...
随机推荐
- django的framework优化
1.优化framework的性能,解决restapi调用慢的问题 ①预加载,关联查询时做缓存,序列化前简单调用setup_eager_loading ,这个需要确定sql查询调用情况(根据数据库结构确 ...
- layer官方演示与讲解(jQuery弹出层插件)
1. 使用layer遇到困难?Fly社区虔诚为您解惑 2. layer 2.0 发布,以独立形式呈现的最后一个版本 3. Fork layer on Github,爱她,就给她加个星啵 当前版本:2. ...
- jQuery实现节点克隆、替换和互换
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 临时表单导出Excel
function ExportExcel(url, vals) { var form = jQuery("<form action='" + url + "' me ...
- 【android】移植IOS视图响应陀螺仪交互行为
IOS有个很有趣味的特性:背景图片可以响应陀螺仪方向的变化,去改变X.Y轴上的值,从而让整个界面看着充满着灵性.具体步骤是:解锁苹果产品,在IOS7以上,摆动手势,观察桌面背景图片的变化. 刚好,我们 ...
- 【android】如何让WebView对Video标签的支持更强力
先说结论:各个产商对HTML5特性支持的程度不一样,用默认的WebChromeClient不能普遍适用. 因此咱基于GITHUB上一个VideoEnabledWebView库做了自己的封装,在魅族.华 ...
- 项目中使用protobuf 3.0
protocol buffer从3.0 原生的compiler支持c++,Java,Python,Go,Ruby,JavaNano,JavaScript,Objective-C,C#,PHP这篇文章作 ...
- HDU4642
#include<stdio.h> #include<string.h> int main() { int i,j,n,m; int t; scanf("%d&quo ...
- Vue学习笔记之Vue的面向对象
0x00 准备工作 JavaScript 语言中,生成实例对象的传统方法是通过构造函数. function Animal(name,age){ this.name = name; this.age = ...
- JS的 instanceof 方法
http://www.cnblogs.com/jasonxuli/p/6769282.html 这是 2014-12-10 发在 iteye 上的文章 今天突然想起js的原型继承模型和相关的proto ...