51nod 1299 监狱逃离 树形dp/最小割
題意:監(jiān)獄有N條道路連接N + 1個交點,編號0至N,整個監(jiān)獄被這些道路連在一起(任何2點之間都有道路),人們通過道路在交點之間走來走去。其中的一些交點只有一條路連接,這些點是監(jiān)獄的出口。在各個交點中有M個點住著犯人(M <= N + 1),剩下的點可以安排警衛(wèi),有警衛(wèi)把守的地方犯人無法通過。給出整個監(jiān)獄的道路情況,以及犯人所在的位置,問至少需要安排多少個警衛(wèi),才能保證沒有1個犯人能夠逃到出口,如果總有犯人能夠逃出去,輸出-1。
這個最小割的模型十分明顯,但是n<=200000讓我沒敢寫,評論里面一堆人卡過了。。
正解是一個思路清奇的dp。。沒見過dp這么寫的。
設(shè)f[x]表示x的狀態(tài),取值有三種。
0:這個點為根的子樹中所有的逃犯都無法到達(dá)這個點,且不存在一條從這點到葉子節(jié)點的路徑。
1:這個點為根的子樹中所有的逃犯都無法到達(dá)這個點,但存在一條從這點到葉子節(jié)點的路徑。
2:這個點為根的子樹中所有的逃犯有可能到達(dá)這個點,且不存在一條從這點到葉子節(jié)點的路徑。
首先如果x這個點有囚犯,那么我肯定不能讓x能到達(dá)他子樹中狀態(tài)為1的點,那么就把答案加上子樹中狀態(tài)為1的點,x的狀態(tài)變?yōu)?。
如果以x為根的子樹既有狀態(tài)為1又有狀態(tài)為2的點,那么狀態(tài)為2的兒子就可以通過x向外面逃走,所以這個也要被鎖死。
否則的情況就比較好處理了,如果子樹中有0那么x為0,否則子樹中是什么x就是什么。
最后如果根的狀態(tài)為2,那么明顯根也要放一個。
數(shù)據(jù)沒出-1的情況。。
總結(jié)
以上是生活随笔為你收集整理的51nod 1299 监狱逃离 树形dp/最小割的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 51nod-1299 监狱逃离(贪心)
- 下一篇: 51Nod-1299-监狱逃离