博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2883 kebab【最大流】
阅读量:6692 次
发布时间:2019-06-25

本文共 1781 字,大约阅读时间需要 5 分钟。

题意: 有一个烧烤机,每次最多能烤 m 块肉,现在有 n 个人来买烤肉,每个人到达时间为 si,离开时间为 ei,点的烤肉数量为 ci,点的烤肉所需烘烤时间为 di,

          每个人要烤的肉可以分成若干份在同时烤,问是否存在一种方案可以满足所有顾客的需求。

分析: 将所有的到达时间和结束时间按升序排序,得到 x <= 2n-1 个时间区间。

          建图:

          s为源,t为汇,

          每个顾客i作为一个结点并连边(s, i, ni*ti)

          每个区间j作为一个结点并连边(j, t, (ej-sj)*M),其中sj, ej分别表示区间j的起始时间和终止时间

          对任意顾客i和区间j,若 [sj, ej] 完全包含在 [si, ei] 之中,则连边(i, j, INF)

          若最大流等于 ∑ni*ti 则是 Yes,否则是 No。

#include 
#include
#include
#include
#include
using namespace std;#define min(a,b)(a)<(b)?(a):(b)const int INF=INT_MAX;const int maxn=2000;const int maxm=10000000;struct node{ int from,to,next,c;}e[maxm];int tot;int head[maxn];void add(int s,int u,int f1,int f2){ e[tot].from=s; e[tot].to=u; e[tot].c=f1; e[tot].next=head[s]; head[s]=tot++; e[tot].from=u; e[tot].to=s; e[tot].c=f2; e[tot].next=head[u]; head[u]=tot++;}int q[maxn];int cnt[maxn];int d[maxn];int low[maxn];int cur[maxn];int maxflow(int s,int t,int n){ int *front=q,*rear=q; for(int i=0;i
0) { d[e[i].to]=d[v]+1; cnt[n]--; cnt[d[e[i].to]]++; *rear++=e[i].to; } } } int flow=0, u=s, top=0; low[0]=INF; for(int i=0;i
0&&d[u]==d[e[i].to]+1) { low[top+1]=min(low[top],e[i].c); q[++top]=i; u=e[i].to; break; } } if(i!=-1) { if(u==t) { int minf=low[top]; for(int p=1,i;p<=top;++p) { i=q[p]; e[i].c-=minf; e[i^1].c+=minf; } flow+=minf; u=s; low[0]=INF; top=0; } } else { int old_du=d[u]; cnt[old_du]--; d[u]=n-1; for(int i=head[u];i!=-1;i=e[i].next) if(e[i].c>0&&d[u]>d[e[i].to]) d[u]=d[e[i].to]; cnt[++d[u]]++; if(d[u]
<=ta[i].en) add(i,j+m,INF,0); } int res = maxflow(s,t,t+1); if(res == sum) printf("Yes\n"); else printf("No\n"); } return 0;}

 

转载于:https://www.cnblogs.com/dream-wind/archive/2012/10/11/2719259.html

你可能感兴趣的文章
oracle goldengate的两种用法
查看>>
Racket里的方括号
查看>>
【强化学习】用pandas 与 numpy 分别实现 q-learning, saras, saras(lambda)算法
查看>>
C#后台解析 json 动态解析 通用(Dictionary)
查看>>
使用UrlRewriter进行Url重写的完整解决方案[转]
查看>>
在代码里访问HTC Diamond的倾斜传感器
查看>>
tcp和udp能否发送0字节的数据包
查看>>
IP协议详解之IP地址要领
查看>>
【VB6笔记-01】 读取Excel绑定到DataGrid
查看>>
Android 测试工具
查看>>
产品架构开发方法 分享记录
查看>>
Windows Azure Cloud Service (40) 使用VS2013的publishSettings文件,发布Cloud Service
查看>>
异常处理原则
查看>>
Visual SVN 2.0.1下载+破解
查看>>
ASP.NET服务器推送及前后台实时交互
查看>>
sql server游标
查看>>
UML设计初步 - 基本概念一(actor, use case)
查看>>
关于Python中的for循环控制语句
查看>>
《http权威指南》阅读笔记(二)
查看>>
Javascript特效代码大全(420个)(转)
查看>>