最大流部分
最大流水題: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這個題的時候就用了別的拆點
的方法去處理臨界了,處理完才發現這個題不用考慮這個。。。
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這個題的時候就用了別的拆點
的方法去處理臨界了,處理完才發現這個題不用考慮這個。。。
轉載于:https://www.cnblogs.com/wlxtuacm/p/5712285.html
總結
- 上一篇: 实验6 在应用程序中播放音频和视频
- 下一篇: 对java面试文章的技术漫谈的C#技术理