【最大流】XMU 1595 机器调度
题目链接:
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 机器调度的更多相关文章
- 【Poj1325】Machine Schedule机器调度
目录 List Description Input Output Sample Input Sample Output HINT Solution Code Position: http://poj. ...
- COGS——T 1168. 机器调度
http://www.cogs.pro/cogs/problem/problem.php?pid=1168 ★★ 输入文件:machine.in 输出文件:machine.out 简单对比 ...
- 【二分图裸题】poj1325机器调度
题目大意:有两个机器A和B,A机器有n个模式,B机器有m个模式,两个机器最初在0模式 然后有k个作业,每个作业有三个参数i,a,b i代表作业编号,a和b代表第i作业要么在A机器的a模式下完成[或者] ...
- ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)
//匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...
- 搜索广告与广告网络Demand技术-流式计算平台
流式计算平台-Storm 我们以Storm为例来看流式计算的功能是什么. 下面内容引用自大圆的博客.在Storm中,一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapRed ...
- Flink 是如何统一批流引擎的
关注公众号:大数据技术派,回复"资料",领取1000G资料. 本文首发于我的个人博客:Flink 是如何统一批流引擎的 2015 年,Flink 的作者就写了 Apache Fli ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- 优先队列(priorityqueue)
队列是先进先出的线性表,顾名思义,优先队列则是元素有优先级的队列,出列的顺序由元素的优先级决定.从优先队列中删除元素是根据优先权的高低次序,而不是元素进入队列的次序.优先队列的典型应用是机器调度等. ...
- 阿里Java面经大全(整合版)
本文里的面经内容全部来源于牛客网,作为秋招备战复习与查缺补漏时使用.里面部分面经有我的注释和想法,以及部分解答,不一定正确,大家可以查询补充. 阿里巴巴,三面,java实习 昨天晚上11点打电话来,问 ...
随机推荐
- [HTML5] Emmet
For example we want to generate the code like this: <a href="#tab1">Tab 1</a>& ...
- java.lang.Math中的基本方法
java.lang.Math类提供的方法都是static的,“静态引入 ”使得不必每次在调用类方法时都在方法前写上类名: import static java.lang.Mat ...
- RHEL7下PXE+Apache+Kickstart无人值守安装操作系统
RHEL7下PXE+Apache+Kickstart无人值守安装操作系统 1.配置yum源 vim /etc/yum.repos.d/development.repo [development] na ...
- C#畅谈“网络电视”
C#畅谈“网络电视” 以上是大家比较喜欢的网络电视软件,例如:PPTV,BOX央视影音,PPS等. 今天我就和大家来聊一下简单的“网络电视”.虽然和上边的软件没发比,但是正在向着这个目标努力中…… 一 ...
- Unicode 与多字节编码
int _tmain(int argc, _TCHAR* argv[]) { //定义LPWSTR 类型的宽字符串 LPWSTR szUnicode = L"This is a Unicod ...
- HDU3853
题意:给R*C的迷宫,起点为1,1 终点为R,C 且给定方格所走方向的概率,分别为原地,下边,右边,求到终点的期望. 思路:既然是求到终点的期望,那么DP代表期望,所以DP[i][j]=原地的概率*D ...
- MeasureSpec
在自定义View和ViewGroup的时候,我们经常会遇到int型的MeasureSpec来表示一个组件的大小,这个变量里面不仅有组件的尺寸大小,还有大小的模式. 这个大小的模式,有点难以理解.在系统 ...
- Linq101-Conversion Operators
using System; using System.Linq; namespace Linq101 { class Conversion { /// <summary> /// This ...
- How JSP work.
A JSP page exists in three forms: JSP source code: consists of a mix of HTML template code. Java lan ...
- drop table xx purge
drop table xx purge; 说明: 所有删除的表都会在回收站里面,只有后面加上purge才是彻底的清空表. (一般用于测试.练习数据表,所以最好不要带purge,要不误删就找不到了.)