【BZOJ3280】 小R的烦恼(费用流,建模)
有很浓厚的熟悉感?餐巾计划问题?
不就是多了几个医院,相当于快洗部和慢洗部开了分店.
考虑建图:
如果把每一天拆成两个点,一个表示需求,另一个表示拥有的话.
显然就是一个两边的图,考虑如果我现在有人,但是可以不用,显然可以向后面一天传递.
如果我死了人,要救活,显然是需求向拥有连边.
然后就差不多了.直接跑费用流就好了.
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<set>
#include<map>
#include<iostream>
using namespace std;
#define ll long long
#define re register
#define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
inline int gi()
{
int f=1,sum=0;char ch=getchar();
while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
return f*sum;
}
typedef pair<int,int> pii;
const int N=50,Inf=1e9+10;
int front[N<<2],nxt[N*N<<2],to[N*N<<2],w[N*N<<2],c[N*N<<2],cnt,s,t,fa[N<<2],pre[N<<2],dis[N<<3],vis[N<<2],n,m,k,need;
queue<int>Q;
void Add(int u,int v,int val,int f){
to[cnt]=v;nxt[cnt]=front[u];front[u]=cnt;w[cnt]=val;c[cnt++]=f;
to[cnt]=u;nxt[cnt]=front[v];front[v]=cnt;w[cnt]=0;c[cnt++]=-f;
}
bool SPFA(){
for(int i=0;i<=t;i++)dis[i]=Inf;
dis[s]=0;Q.push(0);
while(!Q.empty()){
int u=Q.front();Q.pop();vis[u]=0;
for(int i=front[u];i!=-1;i=nxt[i]){
int v=to[i];
if(w[i] && dis[v]>dis[u]+c[i]){
dis[v]=dis[u]+c[i];fa[v]=u;pre[v]=i;
if(!vis[v]){
vis[v]=1;Q.push(v);
}
}
}
}
return dis[t]!=Inf;
}
pii McMf(){
pair<int,int>ans;
while(SPFA()){
int di=Inf;
for(int i=t;i!=s;i=fa[i])di=min(di,w[pre[i]]);
ans.first+=di;ans.second+=di*dis[t];
for(int i=t;i!=s;i=fa[i]){w[pre[i]]-=di;w[pre[i]^1]+=di;}
}
return ans;
}
int main()
{
int T=gi(),Case=0;
while(T--){Case++;printf("Case %d: ",Case);
n=gi();s=0;t=n+n+1;
m=gi();k=gi();need=0;
memset(front,-1,sizeof(front));cnt=0;
for(int i=1;i<=n;i++){
int x=gi();need+=x;
Add(s,i,x,0);Add(i+n,t,x,0);
}
for(int i=1;i<=m;i++){
int x=gi(),y=gi();
Add(s,n+1,x,y);
}
for(int i=1;i<=k;i++){
int x=gi(),y=gi();
for(int j=1;j<=n-x-1;j++)
Add(j,j+x+n+1,Inf,y);
}
for(int i=1;i<n;i++)Add(i+n,i+n+1,Inf,0);
pair<int,int>ans=McMf();
if(ans.first<need)puts("impossible");
else printf("%d\n",ans.second);
}
return 0;
}
【BZOJ3280】 小R的烦恼(费用流,建模)的更多相关文章
- 【bzoj3280】小R的烦恼 费用流
题目描述 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=N ...
- bzoj 3280: 小R的烦恼 费用流
题目: Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项 ...
- BZOJ3280: 小R的烦恼
题解: 随便建一下图费用流就可以过吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath> #incl ...
- bzoj3280: 小R的烦恼(最小费用最大流)
Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实 ...
- 【费用流】bzoj3280 小R的烦恼
类似bzoj1221 http://www.cnblogs.com/autsky-jadek/p/4174087.html 只不过大学有多个,所以我们另开一个节点汇总所有'S->大学'的边,然后 ...
- 【BZOJ3280】小R的烦恼 最小费用最大流
[BZOJ3280]小R的烦恼 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的 ...
- BZOJ_3280_小R的烦恼_最小费用最大流
BZOJ_3280_小R的烦恼_最小费用最大流 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难 ...
- 【BZOJ】【3280】小R的烦恼
网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i ...
- BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发
3280: 小R的烦恼 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 399 Solved: 200[Submit][Status][Discuss ...
随机推荐
- SpringMVC学习笔记:单例与并发问题
Spring中的Bean默认都是单例(singleton),Spring中Bean的scope属性有五种类型: singleton 表示在spring容器中的单例,通过spring容器获得该bean时 ...
- 将hibernate框架融入到spring框架中
第一步:首先创建表: create table user( id int(2) primary key,name varchar(20),password varchar(20)); 第二步:建立d ...
- python的数字图像处理学习(2)
图像的重定义大小,图像的缩扩,图像的旋转: from skimage import transform,data import matplotlib.pyplot as plt img = data. ...
- keras框架的CNN手写数字识别MNIST
参考:林大贵.TensorFlow+Keras深度学习人工智能实践应用[M].北京:清华大学出版社,2018. 首先在命令行中写入 activate tensorflow和jupyter notebo ...
- 2018.11.16 bzoj4827: [Hnoi2017]礼物(ntt)
传送门 nttnttntt 入门题. 考虑展开要求的式子∑i=0n−1(xi−yi−c)2\sum_{i=0}^{n-1}(x_i-y_i-c)^2∑i=0n−1(xi−yi−c)2 => ...
- p标签在div中垂直居中,并且div高度随着p标签文字内容的变化而变化
1.div设置flex布局 div{ display: flex; align-items: center; } 2.div不要设置height,设置min-height
- jQuery警告/确认/提示弹出对话框效果(替换传统JavaScript下的提示框)
http://www.51xuediannao.com/js/jquery/jquery_tsk/ http://www.jq22.com/demo/jqueryConfirm20160413/
- 第30章:MongoDB-索引--地理信息索引
①地理信息索引 地理信息索引分为两类:2D平面索引,另外就是2DSphere球面索引.在2D索引里面基本上能够保存的信息都是坐标,而且坐标保存的就是经纬度坐标. 范例:定义一个商铺的集合 db.sho ...
- java se的那些细节
局部变量:方法体内或语句块内,不能有修饰符 成员变量:与类的对象共存,可以有修饰符 类属性:与类共存,可以有修饰符 一.局部变量:必须先赋值,才能使用,如果不赋初值,则会报错,即没有默认的始使值,而基 ...
- load data妙用
load变量和用户变量的巧妙结合,实现灵活导入字段列(NO.1) LOAD DATA INFILE 'file.csv' INTO TABLE dados_meteo (@var1, @var2) S ...