[fjoi2018]領導集團問題
dp[i][j],i為根子樹,最上面的值是j,選擇的最大值
觀察dp方程
1.整體dp已經可以做了。
2.考慮優美一些的做法:
dp[i]如果對j取字尾最大值,顯然是不上公升的分段函式
而段數就是子樹sz
樹形dp的時候,子樹之間可以直接把分段函式按位相加。對於<=w[x]的,可以額外獲得從dp[i][w[x]]+1得到的轉移
1.用map維護,啟發式合併,但是合併整體加上一些數不能維護具體值,所以維護差分值!
2.額外轉移,找到前驅p,p+1到w[x]整體+1,差分陣列上,就是dp[x][w[x]]++,dp[x][p]--
任何時候,如果鍵值變成0,必須刪除。否則第二問就錯了。
分段函式、整體dp都是基於整體上值域個數有限進行的trick
整體dp運用線段樹合併,還可以支援打標記,適用面其實更廣。
[九省聯考2018]秘密襲擊coat
分段函式,通常處理字尾最值,由於單調,通過記錄差分陣列可以o(1)進行區間加減,啟發式合併。如果涉及區間函式平移操作,表現更為靈活。
模擬賽 yjqb
FJOI2018 領導集團問題
首先本題貪心不是很好做,可以考慮 dp 然後我們有了乙個很直接的想法,令 dp 表示以 i 號點為根當前選擇的節點中權值最小的權值為 j 的最大成員數,可以發現這樣做是 o n 3 的。可以發現這個 dp 有很多轉移是相同的,那麼我們這樣做是非常浪費的,為了能夠快速轉移,我們可以改變一下狀態,令 d...
FJOI2018 領導集團問題
給定帶點權樹,求最大的集合使得,集合內若兩點為祖孫關係,孫子權值 le 祖先權值 令 f 為 u 子樹內選擇 i 個點,最小值最大是多少,轉移顯然 考慮對每個點維護乙個可重集 s u 降序,第 i 個點為子樹內選擇 i 個點,最小值的最大可能值 合併兩個子樹 s s 直接合併集合即可 考慮將 u 加...
FJOI2018 領導集團問題
題解我們可以先搞乙個 dp 出來,dp u i 表示以 u 號節點為根的子樹,選擇集合元素中最小的不小於 i 的最優方案。然後我們可以發現這個 dp 是自帶乙個字尾 max 的,然後我們把它向後差分一下去維護。那麼觀察到對於乙個節點,它的所有子樹之間是互不影響的,所以我們直接把他們對應位置加起來就好...