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的更多相关文章

  1. BZOJ 1391: [Ceoi2008]order [最小割]

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1509  Solved: 460[Submit][Statu ...

  2. BZOJ-2127-happiness(最小割)

    2127: happiness(题解) Time Limit: 51 Sec  Memory Limit: 259 MBSubmit: 1806  Solved: 875 Description 高一 ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. BZOJ3438 小M的作物(最小割)

    题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=3438 Description 小M在MC里开辟了两块巨大的耕地A和B(你可以认为 ...

  5. 最大流-最小割 MAXFLOW-MINCUT ISAP

    简单的叙述就不必了. 对于一个图,我们要找最大流,对于基于增广路径的算法,首先必须要建立反向边. 反向边的正确性: 我努力查找了许多资料,都没有找到理论上关于反向边正确性的证明. 但事实上,我们不难理 ...

  6. bzoj1412最小割

    太羞耻了,m n写反了(主要是样例n m相等) 建图方法比较高(ji)端(chu),对于可以加栅栏的地方连上1的边,然后求最小割即可 为了让代码优(suo)美(duan),我写了一个check,避免多 ...

  7. 【BZOJ1497】[NOI2006]最大获利 最小割

    裸的最小割,很经典的模型. 建图:要求总收益-总成本最大,那么将每条弧与源点相连,流量为成本,每个收益与汇点相连,流量为收益,然后每条弧与它所能到达的收益相连,流量为inf. 与源点相连的是未被选中的 ...

  8. 二分图&网络流&最小割等问题的总结

    二分图基础: 最大匹配:匈牙利算法 最小点覆盖=最大匹配 最小边覆盖=总节点数-最大匹配 最大独立集=点数-最大匹配 网络流: 技巧: 1.拆点为边,即一个点有限制,可将其转化为边 BZOJ1066, ...

  9. CQOI 2016 不同的最小割

    题目大意:一个无向图,求所有点对不同的最小割种类数 最小割最多有n-1个,这n-1个最小割构成一个最小割树 分治法寻找n-1个最小割.对于当前点集X,任选两点为ST做最小割,然后找出与S相连的所有点和 ...

随机推荐

  1. Codeforces Round #273 (Div. 2)-C. Table Decorations

    http://codeforces.com/contest/478/problem/C C. Table Decorations time limit per test 1 second memory ...

  2. spark 省份次数统计实例

    //统计access.log文件里面IP地址对应的省份,并把结果存入到mysql package access1 import java.sql.DriverManager import org.ap ...

  3. HTML5<picture>元素

    HTML5<picture>元素可以设置多张图片 <!DOCTYPE html><html><head><meta http-equiv=&quo ...

  4. ios多线程之GCD

    介绍: Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统.这建立在任务并行执行的线程池模式的基础上的.它首 ...

  5. [OpenJudge] 2727 仙岛寻药

    2727:仙岛求药 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进 ...

  6. Git学习——撤销修改

    git checkout -- <file> 当你修改完一个工作区的文件后,使用git status查看当前的状态.其中有说明,接下来你可以git add <file> 去添加 ...

  7. Python Hashlib笔记

    #python3.4hashlib module - A common interface to many hash functions.hash.digest() - Return the dige ...

  8. (原)剑指offer之旋转数组

    题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...

  9. C++ STL容器底层机制

    1.vector容器 vector的数据安排以及操作方式,与array非常相似.两者的唯一区别在于空间的运用的灵活性.array是静态空间,一旦配置了就不能改变.vector是动态空间,随着元素的加入 ...

  10. spring-cloud-sleuth 学习资源

    https://www.baeldung.com/spring-cloud-sleuth-single-application https://howtodoinjava.com/spring-clo ...