最大流部分

最大流水题:hdu1532、hdu3549、hdu2732(拆点、经典题目)




hdu3572
    isap,水,建图:
    源点0和每个任务,都建立一个0到任务ni的容量为pi的边;
    对于某个任务,其可以执行的时间在si到ei,那么这个任务到si
至ei(含临界)这些时间点都建立容量为1的边;
    每个时间点到汇点建立一条容量为m的边。




hdu4309
    4000多次的网络流。。。
    建图:
        0到每个城市连边、容量为该城市人口;
        好的桥,连容量为无上限的边;
        坏的桥,未修复时连容量为1的边、修复后连容量无上
    限的边。(这个好坑啊。。没修复的时候也可以走一个人,
    可以1Y的代码愣是因为这个检查了一天呀。。。)
        防空洞,直接从防空洞的起始点a到e(终点)连边,没必
    要再在边a和b之间虚拟一个点x而建立a到x、x到b、以及x到
    e的边。直接建立a到e的边就行。




hdu3605
    最大流+状态压缩、判满流,难度一般。
    10W个人么、所以直接网络流是必定TLE的;
    不过注意到m只有10、所以10W的点(人)是可以合并的,用val[i]表示
可以在i的二进制表示中、第j位表示为1的、第j个星球生存的的人的总数,
这样合并之后就最多只有(1<<10)个节点了,网络流之(第j位为1、表示可以
在第j个星球生存)。




hdu1569
    网络流,最大点权独立集=总权值-最小点权覆盖集。
    最小割的应用,建图跑网络流,求出最小割,那么把这个最小割移除掉,
从源点到汇点就一毛钱都不能到达了。用sum减去这个最小割(也就是最大流)
既为所求。
    上面说的很不详细、建图呀什么都没有说,读不懂很正常= =,因为有更
详细的,看这个论文(不是ppt)吧:胡伯涛《最小割模型在信息学竞赛中的应
用》,直接跳到第五部分读就行了。




hdu2883
    网络流+离散化。
    和hdu3572一样的题,只是时间范围是100W,介个有点儿多了。
不过才200个人么,所以点的数量不多,离散化一下就行了(比如有对
于ti和ti+1这两个时间点,都只有第j号任务可以执行,那么完全可以
把ti和ti+1这两个时间点合并,从而和汇点建立一条容量为2个单位的
边(我是将ti+1点并入了ti,j任务和ti建边、而省掉ti+1))。
    这个题给的时间和hdu3752的有一点儿不同,对于si和ei,可以用
来烤肉的时间是ei-si;而对于hdu3752题,对于一个任务有si、ei,那
么可以执行这个任务的单位时间段有ei-si+1条,既题意对待临界的方
式不同。
    刚开始这点儿没有想清楚,做2883这个题的时候就用了别的拆点
的方法去处理临界了,处理完才发现这个题不用考虑这个。。。

posted @ 2016-04-21 23:54  adfae  阅读(97)  评论(0编辑  收藏  举报