题解:

网络流

判断是否为漫流

代码:

#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的更多相关文章

  1. hdu3572 最大流

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

  2. HDU3572 Task Schedule 【最大流】

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

  3. 【最大流】【HDU3572】Task Schedule

    题意: 有N个事件,M台机器.事件有开始时间,持续时间,要在结束时间之前完成,问是否能完成所有事件? 非自己思考出来的 建图:把每个任务和每一天都看做一个点,添加源点和汇点.源点与每个任务之间连一条边 ...

  4. hdu3572 任务分配/最大流量推论全流

    意甲冠军:将n分配的任务m机.到的每个任务需要的天数(如果没有持续的日常),并能做到在哪些天任务.询问是否有计划. 典型的任务(X)----日(Y)一半的最大流量,(因为这个任务是天之间的关系)处理器 ...

  5. HDU3572构造图的模型

    第一次面对建模的图,也映照了我以前想的算法不是重点,问题的转化才是重点 Description: N个任务,M台机器,对于每一个任务有p,s,e表示该任务要做p个时长,要从[s,……)开始,从(……e ...

  6. hdu3572线性欧拉筛

    用线性筛来筛,复杂度O(n) #include<bits/stdc++.h> #include<ext/rope> #define fi first #define se se ...

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

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

  8. hdu3572 任务分配/最大流判断满流

    题意:将n个任务分配为m个机器,给每个任务需要的天数(无需每天连续),和可以在哪些天去做该任务,求是否存在方案. 典型的任务(X)----天(Y)二分最大流,(因为这里任务是与天的关系)处理器控制流量 ...

  9. HDU3572:Task Schedule【最大流】

    上了一天课 心塞塞的 果然像刘老师那么说 如果你有挂科+4级没过 那基本上是WF队 题目大意:有时间补吧 思路:给每个任务向每个时间点连边容量为1 每个时间点向汇点连边 容量为机器的个数 源点向每个任 ...

随机推荐

  1. mysql float 浮点型

    定点数类型 DEC等同于DECIMAL 浮点类型:FLOAT DOUBLE 作用:存储薪资.身高.体重.体质参数等 m,d 都是设置宽度 =============================== ...

  2. 在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

    关于 Docker 容器的监控,google cAdvisor 是个很好的工具,但是它默认只显示实时数据,不储存历史数据.为了存储和显示历史数据.自定义展示图,可以把将cAdvisor与InfluxD ...

  3. NodeJS学习笔记三

    map map对象是一个简单的键/值映射.任何值(包括对象和原始值)都可以用作一个键或一个值. var m = new Map(); var o = {p: "Hello World&quo ...

  4. vue小toast插件报错runtine-only

    var Toast={}; Toast.install = function (Vue, options) { let opt = { defaultType:'bottom', // 默认显示位置 ...

  5. cocos2dx 3.x 蒙板 遮罩 点击圆功能

    //注册触摸 EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create(); listener->onT ...

  6. surface知识点

    SurfaceView和TextureView 在学习直播的过程遇到一个问题:连麦场景下能够支持大小窗口切换(即小窗口变大,大窗口变小),大窗口是TextView(用于拉流显示),而小窗口是Surfa ...

  7. springcloud7---hystrix

    目前使用eureka server完成了服务注册和服务发现,ribbon完成了客户端负载均衡.如果服务提供者的响应很慢那么服务消费者会强制等待,一直等到http请求超时,如果服务消费者还是其他的服务提 ...

  8. Android实现录屏直播(一)ScreenRecorder的简单分析

    http://blog.csdn.net/zxccxzzxz/article/details/54150396 Android实现录屏直播(一)ScreenRecorder的简单分析 Android实 ...

  9. c++语言中的遍历

    原文地址:http://www.cnblogs.com/xylc/p/3653036.html 随着C++11标准的出现,C++标准添加了许多有用的特性,C++代码的写法也有比较多的变化. vecto ...

  10. linux内核分析第三周-跟踪分析Linux内核的启动过程

    一.实验流程 1.打开环境 执行命令:cd LinuxKernel/ 执行命令:qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd root ...