二分图最大匹配模板【匈牙利;Dinic最大流】 匈牙利算法 int n,m; vector map[100010]; int match[100010];//保存匹配的互相点 bool vis[100010]; bool dfs(int u) { for(int j=0;j n m e; for(i ...
分类:
其他好文 时间:
2018-02-21 22:22:04
阅读次数:
191
图论算法 网络最大流模板【EK;Dinic】 EK模板 每次找出增广后残量网络中的最小残量增加流量 const int inf=1e9; int n,m,s,t; struct node{int v,cap;}; vector map[100010]; int flow[10010][10010]; ...
分类:
编程语言 时间:
2018-02-21 22:17:19
阅读次数:
179
第一步:建立无源汇有上下界的网络模型 每行 i 作为一个点并连边(s, i, Ri, Ri),每列 j 作为一个点并连边(j, t, Cj, Cj),设 Uij, Lij 分别表示第 i 行第 j 列元素的上下界,初始时设 Uij=∞, Lij=0。按照给定的约束条 件不断调整 Uij, Lij,若 ...
分类:
其他好文 时间:
2018-02-12 21:02:49
阅读次数:
164
第一问直接跑最大流即可。建图的时候按照费用流建,费用为0. 对于第二问,在第一问dinic剩下的残量网络上建图,对原图的每条边(i,j),建(i,j,inf,cij),表示可以用c的花费增广这条路。然后从新建一个源点,连(s,1,k,0)表示要增加k的流量。跑最小费用最大流即可。 ...
分类:
Web程序 时间:
2018-02-12 15:21:00
阅读次数:
211
s向所有单位连流量为人数的边,所有饭桌向t连流量为饭桌容量的边,每个单位向每个饭桌连容量为1的边表示这个饭桌只能坐这个单位的一个人。跑dinic如果小于总人数则无解,否则对于每个单位for与它相连、满流、另一端不是s的点则是最终方案 cpp include include include inclu ...
分类:
其他好文 时间:
2018-02-07 00:47:06
阅读次数:
166
s向所有类别属性连流量为当前类别属性需要的个数的边,所有题目向t连流量为1的边(表示只能选一次),所有属性向含有它的题连容量为1的边。跑一变dinic,结果小于m则无解,否则看每一个类别属性连出去的题目的边是否满流,满流代表这个属性选择这道题 cpp include include include ...
分类:
其他好文 时间:
2018-02-06 21:33:25
阅读次数:
145
题面 应该是二分图匹配,不过我写的是网络最大流。 dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配。 ...
分类:
其他好文 时间:
2018-02-06 14:25:45
阅读次数:
203
判无解的方法非常粗暴:快T了还是没有合法方案,就是无解。 然后枚举答案,对于每一天都建一套太空站,s连地球,t连月球,上一天的太空站连向这一天的太空站,流量均为inf。然后对于每个飞船,上一天的停靠站向这一天的停靠站连边,流量为p。每次新增一天都新建一套,然后跑一次dinic加给tot,等tot = ...
分类:
其他好文 时间:
2018-02-06 13:00:07
阅读次数:
193
luogu2740[USACO4.2]Drainage Ditches 可以随便求最大流 https://www.luogu.org/problemnew/show/P3376 然后这有个模板题用dinic~ 老是忘记cnt=1;orz ...
分类:
其他好文 时间:
2018-02-05 23:16:25
阅读次数:
159
1458: 士兵占领 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 784 Solved: 458[Submit][Status][Discuss] Description 有一个M * N的棋盘,有的格子是障碍。现在你要选择一些格子来放置一些士兵,一个 ...
分类:
其他好文 时间:
2018-02-03 20:53:51
阅读次数:
143