题目链接:

  http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1595

题目大意

  T组数据,n个任务,m个机器,对于每个任务:有一个处理时间p(表示这个任务需要机器工作p天才能完成),一个释放时间r(表示该任务需要从第r天开始才能被处理),一个完成时间d(表示在第d天之前该任务必须完成)保证:d >= p + r。一个任务同一时间只能在一个机器上运行,但是运行时可以被中断,并移到另一个机器上运行。对于每台机器:在同一时间最多只能处理一个任务,在不同的时间可以处理不同的任务。问是否存在一个调度方案,使得所有任务均可以顺利完成?

题目思路:

  【最大流】

  没看出来是网络流问题。

  将任务和该任务能运行的时间连边,S到任务连处理时间,时间到T连可运行机器数。

  N个任务看成N个节点,对于每个时间夜也抽象成节点,然后设源和汇

  源到任务节点连边,容量为该任务的时间,任务到每个可操作的时间节点连边,容量就是1,最后每个时间节点到汇点连边,容量为机器数量

  最后求解最大流,若最大流=所有任务的总时间,则有解。

 
 //
//by coolxxx
//
#include<iostream>
#include<algorithm>
#include<string>
#include<iomanip>
#include<memory.h>
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
#include<math.h>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define abs(a) ((a)>0?(a):(-(a)))
#define lowbit(a) (a&(-a))
#define sqr(a) ((a)*(a))
#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))
#define eps 1e-8
#define J 10
#define MAX 0x7f7f7f7f
#define PI 3.1415926535897
#define inf 10000000
#define N 504
#define M 50004
using namespace std;
int n,m,lll,ans,cas;
int nn,fl,s,t;
int last[N],d[N],vd[N];
struct xxx
{
int next,e,q;
}a[M];
void add(int x,int y,int z)
{
a[++lll].next=last[x];
a[lll].e=y;
a[lll].q=z;
last[x]=lll;
}
int sap(int u,int f)
{
int i,v,tt,asp=,mix=nn-;
if(u==t)return f;
for(i=last[u];i!=;i=a[i].next)
{
v=a[i].e;
if(a[i].q>)
{
if(d[u]==d[v]+)
{
tt=sap(v,min(f-asp,a[i].q));
asp+=tt;
a[i].q-=tt;
a[i^].q+=tt;
if(asp==f || d[s]==nn)
return asp;
}
mix=min(mix,d[v]);
}
}
if(asp!=)return asp;
if(!--vd[d[u]])d[s]=nn;
else vd[d[u]=mix+]++;
return asp;
}
void build()
{
int i,j,x,y,z;
s=++;t=++;
nn=;
for(i=;i<=n;i++)
{
scanf("%d%d%d",&x,&y,&z);
fl+=x;nn=max(nn,z);
add(s,i,x);add(i,s,);
for(j=y;j<z;j++)
{
add(i,n+j,);add(n+j,i,);
}
}
for(i=;i<=nn;i++)
{
add(n+i,t,m);add(t,n+i,);
}
nn+=n+;
vd[]=nn;
}
int main()
{
#ifndef ONLINE_JUDGE
// freopen("1.txt","r",stdin);
// freopen("2.txt","w",stdout);
#endif
int i,j,k,l,f;
// while(~scanf("%s",s1))
// while(~scanf("%d",&n))
for(scanf("%d",&cas),l=;l<=cas;l++)
{
fl=ans=;lll=;
memset(d,,sizeof(d));
memset(vd,,sizeof(vd));
memset(last,,sizeof(last));
scanf("%d%d",&n,&m);
build();
while(d[s]<nn)
{
f=sap(s,MAX);
ans+=f;
}
if(ans==fl)puts("Yes");
else puts("No");
}
return ;
} /*
// //
*/

【最大流】XMU 1595 机器调度的更多相关文章

  1. 【Poj1325】Machine Schedule机器调度

    目录 List Description Input Output Sample Input Sample Output HINT Solution Code Position: http://poj. ...

  2. COGS——T 1168. 机器调度

    http://www.cogs.pro/cogs/problem/problem.php?pid=1168 ★★   输入文件:machine.in   输出文件:machine.out   简单对比 ...

  3. 【二分图裸题】poj1325机器调度

    题目大意:有两个机器A和B,A机器有n个模式,B机器有m个模式,两个机器最初在0模式 然后有k个作业,每个作业有三个参数i,a,b i代表作业编号,a和b代表第i作业要么在A机器的a模式下完成[或者] ...

  4. ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)

    //匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...

  5. 搜索广告与广告网络Demand技术-流式计算平台

    流式计算平台-Storm 我们以Storm为例来看流式计算的功能是什么. 下面内容引用自大圆的博客.在Storm中,一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapRed ...

  6. Flink 是如何统一批流引擎的

    关注公众号:大数据技术派,回复"资料",领取1000G资料. 本文首发于我的个人博客:Flink 是如何统一批流引擎的 2015 年,Flink 的作者就写了 Apache Fli ...

  7. [CSAPP笔记][第十二章并发编程]

    第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...

  8. 优先队列(priorityqueue)

    队列是先进先出的线性表,顾名思义,优先队列则是元素有优先级的队列,出列的顺序由元素的优先级决定.从优先队列中删除元素是根据优先权的高低次序,而不是元素进入队列的次序.优先队列的典型应用是机器调度等. ...

  9. 阿里Java面经大全(整合版)

    本文里的面经内容全部来源于牛客网,作为秋招备战复习与查缺补漏时使用.里面部分面经有我的注释和想法,以及部分解答,不一定正确,大家可以查询补充. 阿里巴巴,三面,java实习 昨天晚上11点打电话来,问 ...

随机推荐

  1. [AngularJS] 5 simple ways to speed up your AngularJS application

    Nowdays, Single page apps are becoming increasingly popular among the fornt-end developers. It is th ...

  2. PermGen space错误解决方法

    在看下文之前,首先要确认意见事情,就是你是怎样启动tomcat的,我们在平时的开发环境其中,都是通过startup.bat方式启动tomcat的,那么你依照以下的方式,去改动/bin/catalina ...

  3. [转] FDA批准首个莫米松植入式给药系统用于治疗慢性鼻窦炎

    from: http://www.qqyy.com/jibing/erbihouke/111020/3fd2f.html http://www.chemdrug.com/news/231/5/2494 ...

  4. [转] javascript对数组的操作

    javascript数组操作大全,数组方法总汇 1. shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = ...

  5. JNI之本地线程进入c层

    在JNI开发中有时候会遇到在c层创建小线程的情况.从本质来讲,java线程和c线程都是请求kerner获取的,只是一段执行序列.从这个角度看,线程并没有什么不同,java线程和c线程可以通用. 然而在 ...

  6. HttpClient4.0

    ****************************HttpClient4.0用法***************************** 1.初始化HttpParams,设置组件参数 //Ht ...

  7. LinkButton和HyperLink的页面跳转用法

    <%--<asp:HyperLink ID="HyperLink1" NavigateUrl='<%#"/Fxy_Admin/Pro_ClassNew. ...

  8. Sql Server 远程过程调用失败

    很多搞开发的同志们,相信在刚刚使用sql server2008+c#2012(2012以上版本)会出现下面图片中的问题,这时因为安装Visual Studio 2013或者2012版本的时候,会自动安 ...

  9. JavaScript 的 OOP 功能解析

    根据JavaScript创始人Brandon Eich 自己的说法,JavaScript 最好的语言构造是: 函数是一等公民 (first class functions) 闭包 (closure) ...

  10. 【USACO 3.3.1】骑马修栅栏

    [描述] Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编一个程序,读入 ...