求出最大流,再判断是否满流

先不理解为什么要这样建图

后来看了这一篇题解

http://blog.csdn.net/u012350533/article/details/12361003

把0看做源点st

把每一个任务看做一个点

st到每个任务连边,容量为p,表示任务完成需要的天数

每个任务到每个任务的开始至结束时间连边,容量为1,表示这个任务可以在这些天完成

每一天向汇点ed连边,容量为m,表示一天最多运行m个任务

然后判断最大流是否等于执行完所有任务所需要的时间

 #include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std; const int maxn = ;
const int INF = ( << ) - ; struct Edge{
int v,next,c;
}e[*maxn]; int st,ed,lev[maxn],first[maxn],now[maxn],ecnt;
int n,m; void init(){
memset(first,-,sizeof(first));
ecnt = ;
} void addedges(int u,int v,int c){
e[ecnt].next = first[u];
e[ecnt].v = v;
e[ecnt].c = c;
first[u] = ecnt++; e[ecnt].next = first[v];
e[ecnt].v = u;
e[ecnt].c = ;
first[v] = ecnt++;
} bool bfs(){
queue<int> q;
while(!q.empty()) q.pop();
q.push(st);
memset(lev,-,sizeof(lev));
lev[st] = ;
while(!q.empty()){
int x = q.front();q.pop();
for(int i = first[x];~i;i = e[i].next){
int v = e[i].v;
if(lev[v] < && e[i].c > ){
lev[v] = lev[x] + ;
q.push(v);
}
}
}
return lev[ed] != -;
} int dfs(int p,int minf){
if(p == ed || minf == ) return minf;
for(int &i = now[p];~i;i = e[i].next){
int v = e[i].v;
if(lev[v] == lev[p] + && e[i].c > ){
int d = dfs(v,min(e[i].c,minf));
if(d > ){
e[i].c -= d;
e[i^].c += d;
return d;
}
}
}
return ;
} int dinic(){
int max_flow = ,p1;
while(bfs()){
memcpy(now,first,sizeof(first));
while((p1 = dfs(st,INF)) > )
max_flow += p1;
}
return max_flow;
} int main(){
int T;
int kase = ;
scanf("%d",&T);
while(T--){
scanf("%d %d",&n,&m);
init();
st = ;
int maxx = -;
int sum = ;
for(int i = ;i <= n;i++){
int p,s,e;
scanf("%d %d %d",&p,&s,&e);sum+=p;
maxx = max(maxx,e);
addedges(st,i,p);
for(int j = s;j <= e;j++) addedges(i,j+n,);
} ed = n + maxx + ;
for(int j = ;j <= maxx;j++) addedges(j+n,ed,m); int ans = dinic();
printf("Case %d: ",++kase);
if(ans == sum) puts("Yes");
else puts("No");
puts("");
}
return ;
}

hdu 3572 Task Schedule【 最大流 】的更多相关文章

  1. HDU 3572 Task Schedule (最大流)

    C - Task Schedule Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. hdu 3572 Task Schedule (dinic算法)

    pid=3572">Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. HDU 3572 Task Schedule(拆点+最大流dinic)

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  4. hdu 3572 Task Schedule(最大流&amp;&amp;建图经典&amp;&amp;dinic)

    Task Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. hdu 3572 Task Schedule

    Task Schedule 题意:有N个任务,M台机器.每一个任务给S,P,E分别表示该任务的(最早开始)开始时间,持续时间和(最晚)结束时间:问每一个任务是否能在预定的时间区间内完成: 注:每一个任 ...

  6. 图论--网络流--最大流 HDU 3572 Task Schedule(限流建图,超级源汇)

    Problem Description Our geometry princess XMM has stoped her study in computational geometry to conc ...

  7. hdu 3572 Task Schedule(最大流)2010 ACM-ICPC Multi-University Training Contest(13)——Host by UESTC

    题意: 告诉我们有m个任务和k个机器.第i个任务需要ci天完成,最早从第ai天开始,最晚在第bi天结束.每台机器每天可以执行一个任务.问,是否可以将所有的任务都按时完成? 输入: 首行输入一个整数t, ...

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

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

  9. hdu 3572 Task Schedule 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572 Our geometry princess XMM has stoped her study i ...

随机推荐

  1. Jquery中拿到相同的对应的所有的标签

    在Jquery中相同的ID号不能用$()获得,即使是$().each()也不能获得所有的ID相同的元素,只能获得第一个匹配的元素. 比如: 以上4个div,如果用$("#jevoly&quo ...

  2. Discuz 3x 配置问题

    1.注意config里面配置的路径 2.注意ucenter里面 的密钥要一直 3.IP 的选择

  3. 使用javadoc 报错:编码GBK的不可映射字符

    运行命令:javadoc Test1.java 报错:编码GBK的不可映射字符 问题原因:类文件中带有非GBK字符 解决办法:javadoc -encoding utf-8 Test1.java

  4. 【LibreOJ 6278】 数列分块入门 2 (分块)

    题目原址 给出一个长为n的数列,以及n个操作,操作涉及区间加法,询问区间内小于某个值x的元素个数. code: #include<cstdio> #include<iostream& ...

  5. Python for Tkinter

    # tkinter常用组件- 按钮 - button(按钮组件) - RadioButton(单选框组件) - CheckButton(选择按钮组件) - Listbox(列表框组件) - 文本输入组 ...

  6. 邓_ Php·面试

    1:PHP的意思,它能干什么?       PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页,英文的全称(Professional Home Pages)1.Web ...

  7. Linux中在主机上实现对备机上文件夹及文件的操作的C代码实现

    需求描写叙述 编敲代码.完毕在主机上实现对备机上文件夹及文件的操作. 比如,主机为A,备机为B,要求编写的程序运行在A机上,该程序实如今B机上创建文件文件夹及复制文件的操作. 需求分析 我们先不考虑用 ...

  8. 一点一点学架构(四)—Spring.NET错误Cannot Resolve Type……

    背景 在搭建完项目框架之后,当我利用单元測试来測一条线时.出现了下面错误: Cannot resolve type[--]for object with name 'ButtonBll' define ...

  9. 去哪网实习总结:如何配置数据库连接(JavaWeb)

    本来是以做数据挖掘的目的进去哪网的,结构却成了系统开发.. . 只是还是比較认真的做了三个月,老师非常认同我的工作态度和成果. .. 实习立即就要结束了.总结一下几点之前没有注意过的变成习惯和问题,分 ...

  10. Nginx 做系统的前端反向proxy

    Nginx是一款很优秀的基于event的webserver.吞吐量大.占用资源少,只是文档就很让人郁闷了,免费的Nginx和收费的Nginx+的文档共用一份,配置完之后才发现免费的Nginx启动某些命 ...