漫话最小割 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相连的所有点和 ...
随机推荐
- 企业版https
http://www.cocoachina.com/bbs/read.php?tid=194213
- Vue构建项目
构建Vue项目 按照官网教程安装 //先安装脚手架 cnpm i -g vue-cli //查看项目目标列表: webpack browserify pwa 等项目模板 vue list //使用we ...
- laravel使用总结(二)
Mysql Eloquent 模型 新建Model 对应 表前缀 + 类名称 + s namespace App; use Illuminate\Database\Eloquent\Model; cl ...
- $(addprefix PREFIX,NAMES…)
addprefix 是makefile中的函数,是添加前缀的函数例如:$(addprefix src/,foo bar) 返回值为“src/foo src/bar”.所以上面的意思是为dirver_d ...
- Redis 数据类型分析 字符串 哈希 列表 集合 有序集合 优缺点 分析 注意事项 存储结构
一.提高Redis使用性能秘诀 KEY尽量少的原则,能放在1个KEY的就放入1个KEY,KEY开销很大尽量减少与Redis发生的交互次数,能批量的就批量,能事务.管道的就事务.管道从业务架构分析确定使 ...
- python基础学习笔记——初识函数
什么是函数 我们目前为止,已经可以完成一些软件的基本功能了,那么我们来完成这样一个功能:约x 1 2 3 4 5 pint("拿出手机") print("打开陌陌&quo ...
- 使用Phaser开发你的第一个H5游戏(一)
本文来自网易云社区 作者:王鸽 不知你是否还记得当年风靡一时的2048这个游戏,一个简单而又不简单的游戏,总会让你在空闲时间玩上一会儿. 在这篇文章里,我们将使用开源的H5框架--Phaser来重现这 ...
- Cookie测试的测试点
1.禁止使用Cookie:设置浏览器禁止使用Cookie,访问网页后,检查存放Cookie文件中未生成相关文件: 2.Cookie寻出路径:按照操作系统和浏览器对Cookie存放路径的设置,检查存放路 ...
- linux open()文件操作
python程序中经常用到的读文件: f = open("___", 'r') for line in f:#这里每次读取文件的一行,line为字符串,串尾包括了'\n'!!! ...
- Android单个按钮自定义Dialog
代码改变世界 Android单个按钮自定义Dialog dialog_layout.xml <?xml version="1.0" encoding="utf-8& ...