BZOJ 1040 騎士(樹形DP)

2021-09-07 23:11:56 字數 2465 閱讀 6723

題意:給出乙個圖,只有乙個環。每個點有乙個權值。選出一些點兩兩不相鄰,使得權值最大?

思路:(1)找到環。dfs,標記訪問,下乙個節點不是父節點但是已被訪問則這條邊就是環上的兩個點。標記這個邊是我們找到的環邊,並將這兩個點的中乙個設定為root,另乙個我們設為node;

(2)由於root和node不能同時選,我們一次將root設定為不能選node隨意;另一次將node設定為不能選root隨意,這樣樹形dp兩次。注意在遇到(1)中標記的環邊時不能走。這裡注意不是root走到node不能走,是只有遇到這個環邊的才不能走。比如下圖,我們若是root到node都不能走,則答案顯然是錯誤的;所以我們應該標記環邊不能走 。

BZOJ1040 騎士 環套樹 樹形dp

time limit 10 sec memory limit 162 mb submit 5611 solved 2166 submit status discuss z國的騎士團是乙個很有勢力的組織,幫會中匯聚了來自各地的精英。他們劫富濟貧,懲惡揚善,受到社會各 界的讚揚。最近發生了一件可怕的事情...

BZOJ1040 騎士 基環樹DP

description z國的騎士團是乙個很有勢力的組織,幫會中匯聚了來自各地的精英。他們劫富濟貧,懲惡揚善,受到社會各 界的讚揚。最近發生了一件可怕的事情,的y國發動了一場針對z國的侵略戰爭。戰火綿延五百里,在和平環境 中安逸了數百年的z國又怎能抵擋的住y國的軍隊。於是人們把所有的希望都寄託在了騎...

BZOJ1040 騎士(動態規劃)

bzoj 對於每一組厭惡的關係 顯然是連邊操作 如果是一棵樹的話 很顯然的樹型dp 但是,現在相當於有很多個基環 也就是在一棵樹的基礎上再加了一條邊 這個時候怎麼辦,暴力拆掉基環 拆掉任意一條邊 跑兩遍dp 計算出強制不選兩個點中某乙個的最大值 此時就是這個基環的最大值 不用拆掉所有的邊,因為只要拆...