[bzoj2879][网络流,动态加边]美食节[Noi2012]
就是bzoj1070的加强版,数据规模扩大了n倍,这样要是一次把所有边都加进去的话就爆炸了,,所以使用单路增广,增广过一条边后在加入下一条边。
- //By hzwer
1 #include<iostream>- #include<cstdio>
- #include<cstring>
- #define inf 0x7fffffff
- #define T 100001
- using namespace std;
- int n,m,tot,cnt=,ans,t[][];
- int c[],d[],q[],from[],head[];
- bool inq[];
- struct edge{int from,to,next,c,v;}e[];
- void ins(int u,int v,int w,int c)
- {
- cnt++;
- e[cnt].from=u;e[cnt].to=v;
- e[cnt].next=head[u];head[u]=cnt;
- e[cnt].c=c;e[cnt].v=w;
- }
- void insert(int u,int v,int w,int c)
- {ins(u,v,w,c);ins(v,u,,-c);}
- bool spfa()
- {
- for(int i=;i<=T;i++)d[i]=inf;
- int t=,w=;d[]=;inq[]=;q[]=;
- while(t!=w)
- {
- int now=q[t];t++;if(t==T)t=;
- for(int i=head[now];i;i=e[i].next)
- if(e[i].v&&d[e[i].to]>d[now]+e[i].c)
- {
- d[e[i].to]=d[now]+e[i].c;from[e[i].to]=i;
- if(!inq[e[i].to])
- {inq[e[i].to]=;q[w++]=e[i].to;if(w==T)w=;}
- }
- inq[now]=;
- }
- if(d[T]==inf)return ;
- return ;
- }
- void mcf()
- {
- int x=inf,a,b,y;
- for(int i=from[T];i;i=from[e[i].from])
- {
- x=min(x,e[i].v);
- if(e[i].from==)
- {y=e[i].to;a=(y-)/tot+;b=y%tot+;}
- }
- for(int i=from[T];i;i=from[e[i].from])
- {e[i].v-=x;e[i^].v+=x;ans+=e[i].c*x;}
- for(int i=;i<=m;i++)
- insert((a-)*tot+b,n*tot+i,,b*t[i][a]);
- }
- int main()
- {
- scanf("%d%d",&m,&n);
- for(int i=;i<=m;i++)
- {
- scanf("%d",&c[i]);
- tot+=c[i];
- }
- for(int i=;i<=m;i++)
- for(int j=;j<=n;j++)
- scanf("%d",&t[i][j]);
- for(int i=;i<=n*tot;i++)
- insert(,i,,);
- for(int i=;i<=m;i++)
- insert(n*tot+i,T,c[i],);
- for(int i=;i<=n;i++)
- for(int k=;k<=m;k++)
- insert((i-)*tot+,n*tot+k,,t[k][i]);
- while(spfa())mcf();
- printf("%d",ans);
- return ;
- }
[bzoj2879][网络流,动态加边]美食节[Noi2012]的更多相关文章
- 【BZOJ2879】[Noi2012]美食节 动态加边网络流
[BZOJ2879][Noi2012]美食节 Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食 ...
- [BZOJ2879] [Noi2012] 美食节 (费用流 & 动态加边)
Description CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽 ...
- 【bzoj2879】[Noi2012]美食节 费用流+动态加边
原文地址:http://www.cnblogs.com/GXZlegend 题目描述 CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他 ...
- BZOJ 2879: [Noi2012]美食节( 费用流 + 动态加边 )
倒着做菜..然后考虑为当前的人做菜对后面的人的影响就可以了..要动态加边 --------------------------------------------------------------- ...
- [NOI2012]美食节——费用流(带权二分图匹配)+动态加边
题目描述 小M发现,美食节共有n种不同的菜品.每次点餐,每个同学可以选择其中的一个菜品.总共有m个厨师来制作这些菜品.当所有的同学点餐结束后,菜品的制作任务就会分配给每个厨师.然后每个厨师就会同时开始 ...
- P2050 [NOI2012]美食节 动态加边加点
修车数据加强版 需要动态加边加点 #include<bits/stdc++.h> using namespace std; const int INF = 0x7f7f7f7f; , MA ...
- 【bzoj1189】[HNOI2007]紧急疏散evacuate BFS最短路+动态加边网络流
题目描述 发生了火警,所有人员需要紧急疏散!假设每个房间是一个N M的矩形区域.每个格子如果是'.',那么表示这是一块空地:如果是'X',那么表示这是一面墙,如果是'D',那么表示这是一扇门,人们可以 ...
- BZOJ 2879 美食节(费用流-动态加边)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2879 题意:有n道菜,每道菜需要b[i]份,m个厨师,第j个厨师做第i道菜需要时间a[i ...
- bzoj2879(动态加边费用流)
参考题解:http://blog.csdn.net/yxuanwkeith/article/details/52254602 //开始跑费用流用的dijkstra,一直错,后来发现动态加边后我不会处理 ...
随机推荐
- [Swift通天遁地]一、超级工具-(12)使用Toaster制作简短提示语的吐司窗口
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Sql 主键设置
1.开发数据库时常用命名规范 1>.使用不包含数字的单数表名,如果必要的话可以增加模块名前缀. 2>.对于主键的命名,使用表名+ID的形式. 3>.作为外键的列的名字应该与它们所对应 ...
- 键盘按钮keyCode大全:获取按键对应的键值的方法
没有大全,只有方法,授人与鱼不如授人于渔: 下面这行代码,大家可以打在控制台里,直接进行测试: document.body.onkeyup = function (e) { e = e || wind ...
- spring cloud config搭建说明例子(三)-添加actuator
添加心跳 服务端 ConfigServer pom.xml添加actuator包 <dependency> <groupId>org.springframework.cloud ...
- JAVA的双色球 小程序
还是挺简单的,功能过于强大. import java.util.Arrays; import java.util.Random; import java.util.Scanner; public cl ...
- 字符类型C++(ascll码表)
ascll码: 序号 字符 序号 字符 序号 字符 序号 字符 序号 字符 序号 字符 32 空格 48 0 64 @ 80 P 96 ` 112 p 33 ! 49 1 65 A 81 Q 97 a ...
- 洛谷 P3437 [POI2006]TET-Tetris 3D
二维线段树区间更新啊 树套树的外层树,如果是线段树的话一般似乎不能打标记?(毕竟标记不好下传) 然而起码对于这题是可以的...对于外层线段树,每个节点放两个内层线段树dat和setv,分别是得到的值和 ...
- [ Luogu 3924 ] 康纳的线段树
\(\\\) \(Description\) 现在有一个线段树维护长为\(N\)的数列,实现方式是\(mid=((l+r)>>1)\),支持区间加,节点维护区间和. 共有\(M\)次区间加 ...
- python--12、数据库进阶
SQL语句关键词: #再次不做过多介绍 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及. #示例中department为部门表 ...
- html5前端杂记
首先是css的一些知识 毕竟自己懂得不多,但是一看资料.感觉似曾相识 <style> .red-text { color: red; } </style>//这里是css样式的 ...