网络流HDU 2883
建图 源点 -> 每个人 -> 每段时间 -> 汇点
时间要离散化一下 分成一些时间段
权 inf ti[i]*(time[i]-time[i-1]) m*(time[i]-time[i-1])
n人 m个机器
开始时间 总共要的数目 底线时间 每个所需时间
如果可以达到输出Y 否则N
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<queue>
#include<math.h> using namespace std;
#define inf 100000000
#define MAXN 300
#define MAXN1 200000
int si[MAXN+],ni[MAXN+],ei[MAXN+],ti[MAXN+];
int time[MAXN*+],S,T;
int head[*MAXN];
int cnt; struct edg
{
int w,next,to; }x[MAXN1+]; void add(int u,int v,int w)
{
x[cnt].next=head[u];
x[cnt].to=v;
x[cnt].w=w;
head[u]=cnt++;
}
int vis[*MAXN]; int bfs()
{
memset(vis,-,sizeof(vis));
vis[S]=;
queue<int>q1;
q1.push(S); while(!q1.empty())
{
int now=q1.front();
q1.pop();
for(int j=head[now];j!=-;j=x[j].next)
{
if(vis[x[j].to]<&&x[j].w)
{
vis[x[j].to]=vis[now]+;
q1.push(x[j].to);
}
}
}
return vis[T]!=-;
}
int dfs(int u,int w)
{
int ans=; if(u==T)
return w;
int i; for(i=head[u];i!=-;i=x[i].next)
{
if(vis[x[i].to]==vis[u]+&&x[i].w)
{
int b=dfs(x[i].to,min(w-ans,x[i].w));
x[i].w-=b;
x[i^].w+=b;
ans=ans+b;
}
}
return ans;
}
int main()
{
int n,m; while(scanf("%d%d",&n,&m)!=EOF)
{
int i,j;
int c1,sum=;
cnt=; for(i=;i<=n;i++)
{
scanf("%d%d%d%d",&si[i],&ni[i],&ei[i],&ti[i]);
time[cnt++]=si[i];
time[cnt++]=ei[i];
sum=sum+ni[i]*ti[i];
}
sort(time,time+cnt);
c1=;
for(i=;i<cnt;i++)
{
if(time[i]!=time[i-])
time[c1++]=time[i];
}
S=;
T=n+c1+;
cnt=; memset(head,-,sizeof(head));
for(i=;i<=n;i++)
add(S,i,ni[i]*ti[i]),add(i,S,); for(i=;i<c1;i++)
{
if(i==) //0的时候没有i-1
{
add(n+i+,T,m*time[i]);
add(T,n+i+,);
}
else
{
add(n+i+,T,m*(time[i]-time[i-]));
add(T,n+i+,);
} for(j=;j<=n;j++)
{
int a; if(i==)
a=;
else
a=time[i-];
if(si[j]<=a&&time[i]<=ei[j])
{
add(j,n+i+,inf);
add(n+i+,j,);
}
}
}
int ans=;
while(bfs())
ans=ans+dfs(S,inf); if(ans>=sum)
printf("Yes\n");
else
printf("No\n");
} return ;
}
网络流HDU 2883的更多相关文章
- HDU 2883 kebab(最大流)
HDU 2883 kebab 题目链接 题意:有一个烧烤机,每次最多能烤 m 块肉.如今有 n 个人来买烤肉,每一个人到达时间为 si.离开时间为 ei,点的烤肉数量为 ci,每一个烤肉所需烘烤时间为 ...
- 网络流 HDU 3549 Flow Problem
网络流 HDU 3549 Flow Problem 题目:pid=3549">http://acm.hdu.edu.cn/showproblem.php?pid=3549 用增广路算法 ...
- hdu 2883 kebab 网络流
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2883 Almost everyone likes kebabs nowadays (Here a ke ...
- 图论--网络流--最大流 HDU 2883 kebab(离散化)
Problem Description Almost everyone likes kebabs nowadays (Here a kebab means pieces of meat grilled ...
- hdu 2883 kebab(时间区间压缩 && dinic)
kebab Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU 2883 kebab
kebab Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 2883 ...
- 网络流 HDU 3605
建图 源点 -> 1024类人 -> 星球 -> 汇点 权 每类人数目 星球容量 星球容量 列举 0~1 ...
- kebab HDU - 2883(按时间段建点)
题意: 有n个人去撸串,每个人都能决定自己的串上有几块肉,每一块肉都要花费一个单位时间才熟,烤炉一次能烤m块肉 给出每个人的起始时间.终止时间.要几串.每个串上有几块肉,问能否满足所有的人 (啥?题不 ...
- hdu 2883(构图+最大流+压缩区间)
kebab Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- openjudge6047分蛋糕[DP]
描述 有一块矩形大蛋糕,长和宽分别是整数w .h.现要将其切成m块小蛋糕,每个小蛋糕都必须是矩形.且长和宽均为整数.切蛋糕时,每次切一块蛋糕,将其分成两个矩形蛋糕.请计算:最后得到的m块小蛋糕中,最大 ...
- flex sdk中mx_internal function getTextField() 这种函数如何调用?
在用flex 开发中,一些函数前打上了 mx_internal 外部调用不了,其实这样写就可以了 xxx.mx_internal::getTextField() 而 xxx.getTextField( ...
- java 24 - 4 GUI之创建数据转移窗口
需求: 把文本框中的数据,通过点击按钮,转移到文本域中. 同时清空文本框中的数据 代码:(步骤都注释了) public class FrameDemo4 { public static void m ...
- kali开启ssh
Kali 2.0安装之后需要做的事--使用SSH进行远程登录 2015年8月11日,Kali官方推出了新的kali系统2.0版本,此次升级最大的特点就是系统界面的设计理念更加先进,以及系统的升级方 ...
- slice,substr和substring的区别
首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度.直接看下面例子: var test = ' ...
- Java集合系列:-----------03ArrayList源码分析
上一章,我们学习了Collection的架构.这一章开始,我们对Collection的具体实现类进行讲解:首先,讲解List,而List中ArrayList又最为常用.因此,本章我们讲解ArrayLi ...
- Html5 Egret游戏开发 成语大挑战(四)选关界面
通过前面的开始界面基本上了解了eui的使用方法,可以简单快速的制作一个UI界面,本篇使用第二界面选关界面展示更为难一点的代码控制,来展现关卡地图的内容,请确保素材和资源完整,可以在前面的教程中找到下载 ...
- 如何重现难以重现的bug
生活中有这么一种现象:如果你关注某些东西,它就会经常出现在你眼前,例如一个不出名的歌手的名字,一种动物的卡通形象,某个非常专业的术语,等等等等.这种现象也叫做“孕妇效应”.还有类似的一种效应叫做“视网 ...
- 深入理解OOP(第一天):多态和继承(初期绑定和编译时多态)
在本系列中,我们以CodeProject上比较火的OOP系列博客为主,进行OOP深入浅出展现. 无论作为软件设计的高手.或者菜鸟,对于架构设计而言,均需要多次重构.取舍,以有利于整个软件项目的健康构建 ...
- 开源免费的HTML5游戏引擎——青瓷引擎(QICI Engine) 1.0正式版发布了!
青瓷引擎的成长 青瓷引擎自2015年4月项目启动开始,7月首次亮相2015年ChinaJoy,便得到业界的极大关注,随后开启限量测试,收到数百个开发者团队的试用申请及反馈,期间经历了18个内测版本,完 ...