漫话最小割 part1
codeforces 724D
[n个城市每个城市有一个特产的产出,一个特产的最大需求。当i<j时,城市i可以运最多C个特产到j。求所有城市可以满足最大的需求和]
[如果直接最大流建图显然会T。考虑将最大流问题转换为最小割。每个城市会被划分到S集或者T集。]
[另dp[i][j]表示前i个城市有j个城市在S集的最大和。
dp(i, j) = min(dp(i - 1, j - 1) + si, dp(i - 1, j) + pi + j * c).
[将网络流转化为最小割,并用DP加以解决]
HDU 4971
[经典题变形: 有n个项目有收益,m个投资有花费。每个项目需要完成若干个投资,同时投资直接也有依赖关系]
[我们可以将收益先取走,将收益也转化为花费。S向项目连边,投资向T连边,流量都是对应花费。依赖关系的流量为INF。最小割即为答案]
Codechef SPCLN
[n个发射器,m个陨石。每个发射器可以打一些陨石并有收益。陨石被打直接有依赖关系,n个发射器依次发射。求最大收益]
[每个陨石用n+1个点的链表示,流量依次为每个发射器的花费(那个陨石拿100收益,多出来的为花费),如果打不了就是INF。S连向第一个点,最后一个点连向T。陨石i依赖j,则在i的链的第k个连向j的链的k+1,流量为INF,最小割为答案]
[观察上面两个问题的特点。]
[1.有花费也有收益。对于收益,我们应该将其转化为花费以便最小割问题解决。单个物品的转换比较简单,先获得收益,再把收益变为花费。多个物品的转换,可以选择一个足够大的值获得,再把这个值减去收益变为花费。]
[2.有依赖关系。在还有收益的模型里依赖关系非常好理解,如果你想要获得这个好处,你必须blabla…。但应该我们将收益转化为花费,依赖关系就会变为这几个代价,你至少要挑一个承受。]
[由1,2。我们得到一个一般的最小割建模思路。首先将问题转换成若干个事件,每个事件有一个花费。有一些事件间的关系,每一个关系可以表述为:这些事件必须至少发生一件,或者,这些事件不能全不发生。于是我们可以用边刻画事件,流量为费用,如果不能发生就是INF。每一个关系我们将这些事件从S连到T。为了刻画关系更加方便,用INF的边单纯表示事件的连接,分为或连接和蕴含连接。或连接的实际意义是如果该连接之前的事件没有发生,则之后必须发生一件。蕴含连接的实际意义是如果该连接之前的事件发生,则之后得事件也要发生。两种连接的方式分别是尾连头,头连头]
[经过总结,我们得出一个结论。什么样的问题可以用最小割解决呢?逻辑上只包括或关系或者蕴含关系]
漫话最小割 part1的更多相关文章
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
- BZOJ-2127-happiness(最小割)
2127: happiness(题解) Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1806 Solved: 875 Description 高一 ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- BZOJ3438 小M的作物(最小割)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=3438 Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为 ...
- 最大流-最小割 MAXFLOW-MINCUT ISAP
简单的叙述就不必了. 对于一个图,我们要找最大流,对于基于增广路径的算法,首先必须要建立反向边. 反向边的正确性: 我努力查找了许多资料,都没有找到理论上关于反向边正确性的证明. 但事实上,我们不难理 ...
- bzoj1412最小割
太羞耻了,m n写反了(主要是样例n m相等) 建图方法比较高(ji)端(chu),对于可以加栅栏的地方连上1的边,然后求最小割即可 为了让代码优(suo)美(duan),我写了一个check,避免多 ...
- 【BZOJ1497】[NOI2006]最大获利 最小割
裸的最小割,很经典的模型. 建图:要求总收益-总成本最大,那么将每条弧与源点相连,流量为成本,每个收益与汇点相连,流量为收益,然后每条弧与它所能到达的收益相连,流量为inf. 与源点相连的是未被选中的 ...
- 二分图&网络流&最小割等问题的总结
二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066, ...
- CQOI 2016 不同的最小割
题目大意:一个无向图,求所有点对不同的最小割种类数 最小割最多有n-1个,这n-1个最小割构成一个最小割树 分治法寻找n-1个最小割.对于当前点集X,任选两点为ST做最小割,然后找出与S相连的所有点和 ...
随机推荐
- python_112_断言
#断言 如果满足断言的执行程序,如果不满足则抛错误 assert type(1) is int print('断言正确的话,就继续执行') # assert type('a') is int #Ass ...
- HDU-1009-肥鼠交易
这题是一道简单的可拆分的贪心题目,需要注意的是,我们定义的结构体里面都应该用double类型, 或者float类型,不然两个int相除,就失去了精度(强转也可以). #include <cstd ...
- activiti工作流使用一般步骤
activiti工作流使用的一般步骤 一.在eclipse或Myeclipse中安装activiti插件: 二.通过activiti连接数据库,有以下两种连接数据库的形式: 1.通过java代码链接数 ...
- JS原生增删,判断class是否存在方法
function hasClass(obj, cls) { if (obj.className) { return obj.className.match(new RegExp('(\\s|^)' + ...
- perl学习之:shift/unshift
perl中shift 和unshift 操作 2008-02-02 11:18:04| 分类: Perl语言|举报|字号 订阅 ############################### ...
- 对freescale的mfgtool的ucl2.xml的理解
转载于此:http://blog.csdn.net/bugouyonggan/article/details/8664898 对于Freescale MFG编程工具控制文件ucl2.xml的分析 为了 ...
- PAT Basic 1034
1034 有理数四则运算 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整数, ...
- angular-websocket.js 使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 4A. Just a Hook
4A. Just a Hook Time Limit: 2000ms Case Time Limit: 2000ms Memory Limit: 32768KB 64-bit integer IO ...
- pytorch将cpu训练好的模型参数load到gpu上,或者gpu->cpu上
假设我们只保存了模型的参数(model.state_dict())到文件名为modelparameters.pth, model = Net() 1. cpu -> cpu或者gpu -> ...