费用流
Deep_Kevin
我太弱了
展开
-
Chips Challenge,UVA1104,amazing的建图+有源汇上下界最小费用最大流
正题 真是非常的amazing啊! 先说说正确做法. 由于要满足A/B的限制,考虑暴力枚举每一行每一列最多选多少个,根据这个求出当前全局最多选多少个,如果满足条件,那么更新答案. 对于行列建立二分图,源向行点连边,容量为该行的可放置部件(包括已选)的位置个数,列点向汇连边容量为该列的可放置部件(包括已选)的位置个数.枚举行列最大值t,从行点到该行对应的列点连一条容量为t的边,这条边流了多少,说明行和列各选了多少. 对于一个可放置点(x,y...原创 2020-09-18 10:20:07 · 183 阅读 · 0 评论 -
80人环游世界,洛谷P4553,有源汇上下界最小费用可行流
正题 对于每一个城市拆成入点和出点,连边就可以了用一条下界上界都为v的边来限制一个城市的经过次数,然后源点也多拆一个点出来限制只能有m个人,最后求可行流就可以(反正是最小费用,可行流和最大流没区别. 但是博主并不知道有源汇上下界最小费用最小流怎么求,倒着跑最长路?只增广权为0的路径?#include<bits/stdc++.h>using namespace std;const int N=210;struct edge{ int y,nex,f,c;...原创 2020-09-17 22:00:01 · 179 阅读 · 0 评论 -
Incorrect Flow,CF708D,最小费用最大流
正题 显然一条边要么增加流量,要么减少流量,增加流量相当于正着流,减少流量相当于反着流,根据c与f的关系来分段计费,对于那些原来不满足流量平衡的点,如果入度过多,那么就从S向其连容量为入度-出度的边,表示从这个点要找那么多的容量流出去,出度过多同理. 然后跑最小费用最大流即可,由于上限其实是可以到正无穷的,所以必然有解.#include<bits/stdc++.h>using namespace std;const int N=110,M=1010;st...原创 2020-09-17 21:56:31 · 184 阅读 · 0 评论