DTOJ 4868. 極樂迪斯科

題意

作爲瑞瓦肖57分局最優秀的警探,你被派到馬丁內斯打擊犯罪。馬丁內斯的一些建築物上安裝了mm個攝像頭。你明白,普通人並不會因此受到多少保護,這些攝像頭是保護*資本主義*的。作爲一個信仰共產主義的戰士,你決定濫用職權,拆掉一些攝像頭。馬丁內斯的街道是一棵nn個點的有根樹,每個點是一個商店,豪宅之類的重要建築物,建築物之間的邊就是街道,一個攝像頭可以監控子樹中所有和它的距離di\leq d_i的建築物。拆一個攝像頭是不小的勞動,會減少cic_i的快樂度。而一個毫無監視的重要建築物會給予你viv_i的快樂度。你想知道,你最大能獲得多少快樂度。

1fi<i1\leq f_i<i

1xin1\leq x_i\leq n

0din0\leq d_i\leq n

1ci,vi1091 \leq c_i,v_i\leq10^9

n,m5×105n,m\leq5\times10^5

數據點 n,m 性質
1,2 20\leq 20
3,4,5,6 200\leq 200
7,8,9 3000\leq 3000
10,11 4×104\leq 4\times10^4 di20d_i\leq20
12,13,14,15,16 $ \leq 10^5$
17,18,19,20

題解

原本只會DP,設f[u][i]f[u][i]uu子樹內前ii層不考慮的最大價值,對於uu的子樹,枚舉一個距離之外的監控被拆除,加上子樹的DP值,效率O(depi)O(\sum_{}{dep_i})。但這個DP用長剖或線段樹合併都難以優化,有一種比較大力的拆開分討+線段樹合併的做法,但顯然不太適合我。

“這不就是模擬費用流板子嗎”——slz
發現這有一個比較顯然的最小割建圖,先取所有點權,把起點與監控連監控價值的邊,樹上節點與終點連點權的邊,有控制關係的監控和樹上節點連正無窮的邊,跑最大流減掉即可。考慮如何使流量最大,按照從後代到祖先的關係考慮每一個監控,那麼該監控肯定要從有連邊的節點中深度最大的開始選要選取,於是直接dfs時維護子樹內以深度爲下標的殘餘流量的線段樹,在每個節點上計算答案併合並子樹點的線段樹即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章