首先看到這個題,可以想到最小割樹。
然後發現原圖的最小割樹與原圖是等價的。
那也就是說,答案可以表示為乙個樹。
然後考慮如何求出來這個樹。大概的思路就是由小到大考慮每一組關係或者由大到小考慮每一組關係。
這裡用後一種思路,大概套用一下類似克魯斯卡爾重構樹的思想,然後發現這些關係的最大生成樹就是最小割樹。
然後暴力判斷一下是否合法,這題就解決了。
容易發現答案就是選擇乙個點集。
對於點集中的所有邊,可以選擇一條路徑使得係數為 $1$,其他係數均為 $2$。
所以就寫乙個子樹歸併 dp ,記錄子樹中選擇的點的個數、子樹中已經出現了多少個端點就行了。
想這道題的時候發現,原來回文樹是可以簡單的支援雙端插入的。
其實只要維護雙端分別的終止節點。
然後對於右端點拓展,能改變左端點的終止節點僅當整個串是回文串,所以特別判斷一下就好了。
然後通過回文樹的做法大概可以想到,對於字串每次拓展,答案的變化量在 $0$ 到 $2$ 之間。
所以只要弄個雜湊分別判斷答案增加 $2,1$ 是否合法就好了。
省選模擬76
發現答案一定可以是一棵樹,因為對於任意乙個合法的圖求出它的最小割樹也是答案。然後就考慮構造,根據一些性質可以猜想實際上就是原圖的最大生成樹,所以直接跑就行了。求出生成樹之後再暴力檢驗是否合法即可。發現這個東西的形式很熟悉,假如再加入第乙個點和最後乙個點的權值的話,那麼答案就是虛樹邊權和的二倍。那麼現...
省選模擬104 題解
a.簽到題 把每個點向它右側比他大的第乙個點之間連邊,如果沒有那麼向 root 連邊。那麼可以構成一棵樹。特判一些情況之後,可以認為問題就是 1.給某節點和它的所有兒子節點權值加上乙個值。2.詢問一條路徑的權值和。首先考慮如果只詢問單點的維護方法,其實就是打乙個標記表示給整個兒子集合都加上了若干權值...
省選模擬102 題解
a.island 對於正負不同的情況,o n 列舉左側的位置然後計算。對於正負性相同的情況,把笛卡爾樹建出來,然後每次考慮跨過最小值的貢獻。分幾種情況 左右均不超過最小值,左右僅有乙個超過最小值,左右都超過最小值。然後順便統計上其中乙個端點為劃分點的貢獻。然後瘋狂的寫式子拆式子就沒了。做法挺簡單的,...