BZOJ-3876-支线剧情-Ahoi2014-上下界网络流
生活随笔
收集整理的這篇文章主要介紹了
BZOJ-3876-支线剧情-Ahoi2014-上下界网络流
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
描述
【故事背景】
宅男JYY非常喜歡玩RPG游戲,比如仙劍,軒轅劍等等。不過JYY喜歡的并不是戰斗場景,而是類似電視劇一般的充滿恩怨情仇的劇情。這些游戲往往
都有很多的支線劇情,現在JYY想花費最少的時間看完所有的支線劇情。
【問題描述】
JYY現在所玩的RPG游戲中,一共有N個劇情點,由1到N編號,第i個劇情點可以根據JYY的不同的選擇,而經過不同的支線劇情,前往Ki種不同的新的劇情點。當然如果為0,則說明i號劇情點是游戲的一個結局了。
JYY觀看一個支線劇情需要一定的時間。JYY一開始處在1號劇情點,也就是游戲的開始。顯然任何一個劇情點都是從1號劇情點可達的。此外,隨著游戲的進行,劇情是不可逆的。所以游戲保證從任意劇情點出發,都不能再回到這個劇情點。由于JYY過度使用修改器,導致游戲的“存檔”和“讀檔”功能損壞了,
所以JYY要想回到之前的劇情點,唯一的方法就是退出當前游戲,并開始新的游戲,也就是回到1號劇情點。JYY可以在任何時刻退出游戲并重新開始。不斷開始新的游戲重復觀看已經看過的劇情是很痛苦,JYY希望花費最少的時間,看完所有不同的支線劇情。
分析
- 帶有上下界的網絡流
- 題目中“游戲保證從任意劇情點出發,都不能再回到這個劇情點”的條件保證這是一個拓撲圖即DAG.
- 對于原圖中的邊x->y, 費用為cost, 這條邊至少走一次, 而且每次時間都是相同的. 那么就可以起點->每個點(INF, 0), x->y(INF, cost), y->匯點(1, 0). 然后限制x->y的流量下限即可.
- 關于有流量下限的網絡流問題, 一種比較直觀的理解方式是如果x->y的容量為cap, 而下限為low, 那么讓cap-low作為新的容量. 但是這時x和y的流量就不守恒了, 直白點說就是x流到y的流量也是x的祖先流到x的, 那么直接把low剪掉后x的祖先就不會把流量low流到x了. 這時流量就不守恒了. y丟失了部分流量, x的流量盈余了.
解決的方法是建立附加源和附加匯, 把這部分low的流量補給y再把x的流量low通過附加匯流走. 再在原匯和原源之間連容量為INF的邊保持平衡. 把附加源和附加匯作為新的源匯跑最小費用最大流.
代碼
https://code.csdn.net/snippets/623430
總結
以上是生活随笔為你收集整理的BZOJ-3876-支线剧情-Ahoi2014-上下界网络流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ-1927-星际竞速-SDOI2
- 下一篇: BZOJ-1003-物流运输trans-