bzoj2245: [SDOI2011]工作安排
费用流。
这道题的模型比较明显,拆点也是很容易看出来的。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1000 + 10;
const int maxm = 500000 + 10;
const int inf = 0x3f3f3f3f;
int g[maxn],v[maxm],f[maxm],c[maxm],next[maxm],eid;
int idn[maxn],idm[maxn];
int a[maxn][5];
int n,m,S,T,vid,u;
int d[maxn],pre[maxn];
int q[maxn],l,r;
bool inque[maxn]; void addedge(int a,int b,int F,int C) {
v[eid]=b; f[eid]=F; c[eid]=C; next[eid]=g[a]; g[a]=eid++;
v[eid]=a; f[eid]=0; c[eid]=-C; next[eid]=g[b]; g[b]=eid++;
} void build() {
memset(g,-1,sizeof(g));
scanf("%d%d",&n,&m);
S=1; T=2;
vid=2;
for(int i=1,t;i<=m;i++) {
idm[i]=++vid;
scanf("%d",&t);
addedge(S,idm[i],t,0);
}
for(int i=1;i<=n;i++) {
idn[i]=++vid;
for(int j=1,t;j<=m;j++) {
scanf("%d",&t);
if(t==1) addedge(idm[j],idn[i],inf,0);
}
}
for(int i=1,t;i<=n;i++) {
scanf("%d",&t);
for(int j=1;j<=t;j++) scanf("%d",&a[j][1]);
a[t+1][1]=inf;
for(int j=1;j<=t+1;j++) scanf("%d",&a[j][2]);
for(int j=1;j<=t+1;j++)
addedge(idn[i],T,a[j][1]-a[j-1][1],a[j][2]);
}
} bool SPFA() {
memset(d,0xe3f,sizeof(d));
d[S]=0; l=r=0;
inque[q[r++]=S]=1;
while(l<r) {
inque[u=q[l++]]=0;
for(int i=g[u];~i;i=next[i]) if(f[i] && d[v[i]]>d[u]+c[i]) {
d[v[i]]=d[u]+c[i];
pre[v[i]]=i;
if(!inque[v[i]]) {
inque[q[r++]=v[i]]=1;
}
}
}
return d[T]<inf;
} int augment() {
int aug=inf,res=0;
for(int i=T;i!=S;i=v[pre[i]^1]) {
aug=min(aug,f[pre[i]]);
}
for(int i=T;i!=S;i=v[pre[i]^1]) {
f[pre[i]]-=aug;
f[pre[i]^1]+=aug;
res+=c[pre[i]]*aug;
}
return res;
} void solve() {
long long res=0;
while(SPFA()) res+=augment();
printf("%lld\n",res);
} int main() {
build();
solve();
return 0;
}
bzoj2245: [SDOI2011]工作安排的更多相关文章
- BZOJ2245 [SDOI2011]工作安排 【费用流】
题目 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由一名 ...
- [bzoj2245][SDOI2011]工作安排(费用流)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2245 分析: 要注意到题目下面说的w是单增的 明显的费用流: 弄个源点S,汇点T S连 ...
- [bzoj2245][SDOI2011]工作安排——费用流
题目大意: 传送门 题解: 很容易建模,把每一个工作人员拆成两个点,由第一个点向第二个点连S+1条边即可. 这水题没什么难度,主要是longlong卡的丧心病狂... 代码 #include < ...
- 【BZOJ2245】[SDOI2011]工作安排(费用流)
[BZOJ2245][SDOI2011]工作安排(费用流) 题面 BZOJ 洛谷 题解 裸的费用流吧. 不需要拆点,只需要连边就好了,保证了\(W_j<W_{j+1}\). #include&l ...
- 【BZOJ2245】[SDOI2011]工作安排 拆边费用流
[BZOJ2245][SDOI2011]工作安排 Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被 ...
- bzoj 2245 [SDOI2011]工作安排(最小费用最大流)
2245: [SDOI2011]工作安排 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1197 Solved: 580[Submit][Statu ...
- BZOJ 2245: [SDOI2011]工作安排( 费用流 )
费用流模板题..限制一下不同愤怒值的工作数就可以了. ------------------------------------------------------------------------- ...
- 【bzoj2245】[SDOI2011]工作安排 费用流
题目描述 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由 ...
- 【bzoj2245】 SDOI2011—工作安排
http://www.lydsy.com/JudgeOnline/problem.php?id=2245 (题目链接) 题意 n个产品,每个需要造C[i]件:m个员工,每个员工可以制造一些产品:每个员 ...
随机推荐
- MYSQL远程登录权限设置
Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ...
- android 开发:讯飞的离线命令识别器官方demo使用及demo下载
场景:使用本地构建语法,离线识别命令词. 修改文件AsrDemo.java mLocalGrammar 修改为你自己的语法 mAsr.setParameter(SpeechConstant.GRAM ...
- 解决方法:java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
hibernate4.3版本 报错: 把实体注解的声明方式修改一下解决,如: 将 @Entity@Table(name=”table_name”)改为@Entity(name=”table_name” ...
- svn: E155004: ..(path of resouce).. is already locked
svn: E155004: ..(path of resouce).. is already locked I'm getting an error when trying to commit a c ...
- 【BZOJ】【1662】/【POJ】【3252】 【USACO 2006 Nov】Round Number
数位DP 同上一题Windy数 预处理求个组合数 然后同样的方法,这次是记录一下0和1的个数然后搞搞 Orz cxlove /************************************* ...
- android控件---spinner
spinner下拉列表框的列表项有两种配置方式: 1.通过资源文件配置,通过在values种的xml,比如strings.xml中使用<string-array>元素添加制定列表项内容,然 ...
- 腾讯QQ企业邮箱在ruby on rails 框架中的mailer配置
在编写ruby on rails程序时,我们可能会需要用到发送邮件的程序,如果使用gmail进行smtp发送一般问题不大,但很多企业使用的是腾讯QQ企业邮箱.使用该邮箱进行链接时出现各种错误,goog ...
- Why am I able to change the contents of const char *ptr?
http://stackoverflow.com/questions/3228664/why-am-i-able-to-change-the-contents-of-const-char-ptr I ...
- JavaScript 函数参数是传值(byVal)还是传址(byRef)?
对于“JavaScript 函数参数是传值(byVal)还是传址(byRef)”这个问题,普遍存在一个误区:number,string等“简单类型”是传值,Number, String, Object ...
- 企业运营对 DevOps 的「傲慢与偏见」
摘要:出于各种原因,并非所有人都信任 DevOps .有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps ...