网络流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 ...
随机推荐
- Vijos1392拼拼图的小衫[背包DP|二维信息DP]
背景 小杉的幻想来到了经典日剧<死亡拼图>的场景里……被歹徒威胁,他正在寻找拼图(-.-干嘛幻想这么郁闷的场景……). 突然广播又响了起来,歹徒竟然又有了新的指示. 小杉身为新一代的汤浅, ...
- java 22 - 19 多线程之生产者和消费者的代码优化
在之前,是把生产者录入数据和消费者获取数据的所有代码都分别写在各自的类中. 这样不大好 这次把生产者和消费者部分关键代码都写入资源类中: package zl_Thread; public class ...
- MySQL注射的过滤绕过技巧[1]
SQL注射的绕过技巧较多,此文仅做一些简单的总结. 前文已经提到,最好利用的注射点: 支持Union 可报错 支持多行执行.可执行系统命令.可HTTP Request等额外有利条件 若非以上类型,则可 ...
- nginx负载均衡集群中的session共享说明
在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 下面罗列几种nginx负载均衡 ...
- .NET Framework 中的所有类型
.NET Framework 中的所有类型不是值类型就是引用类型. 值类型是使用对象实际值来表示对象的数据类型. 如果向一个变量分配值类型的实例,则该变量将被赋以该值的全新副本. 引用类型是使用对对象 ...
- subtable
- node基础02:第一个node程序
1.第一个web服务器 var http = require("http"); http.createServer(function(request, response){ res ...
- Theano2.1.17-基础知识之剖析theano的函数
来自:http://deeplearning.net/software/theano/tutorial/profiling.html Profiling Theano function note:该方 ...
- 制作鼠标移动到div上面显示弹出框
<div class="show-dialog hide"> <header> <div class="note"> < ...
- 【基础】利用thrift实现一个非阻塞带有回调机制的客户端
假设读者对thrift有一定了解. 客户端有时需要非阻塞的去发送请求,给定服务端一个请求,要求其返回一个计算结果.但是客户端不想等待服务端处理完,而是想发送完这个指令后自己去做其他事情,当结果返回时自 ...