省選模擬34

2022-03-26 19:32:43 字數 493 閱讀 8173

考慮貪心,首先如果某個位置的權值小於0,並且前面能夠抵消掉,那麼他就不會對前面產生影響。

所以說,從後向前掃一遍,將負權值塞入堆中,用大根堆維護當前是否可以刪掉堆頂元素。

最後將詢問離線,掃一遍即可。

似乎是個亂搞題?

我的做法是,對於每種權值,維護當前能夠加入聯通塊的所有點,再維護每種權值當前在聯通塊中的所有葉子節點,如果加入所有能加入的點之後點的個數》k,那麼刪掉一些葉子節點。

之後,再加入當前權值的所有節點。

對於葉子節點的維護,維護度數簡單維護即可。

可以發現,這個玩意的答案就是虛樹的邊權和減去虛樹的直徑。

對於虛樹的邊權和,有個結論:將所有節點按照dfs序排序,那麼邊權和就是相鄰兩個點之間的距離和,證明的話,感性理解一下,似乎挺顯然的?所以這一部分直接用set維護一下就好了。

動態維護虛樹的直徑,首先合併兩個子樹的直徑時,新樹的直徑大小只有6種情況,分類討論即可。

所以說這道題可以用線段樹來實現這個合併的過程。

省選模擬34

t1想到暴力貪心,然後猜了乙個性質,詢問排序繼承刪掉的點,用線段樹優化,肝了好久然後拍偽了。最後快讀還沒有開ll然後爆零。然後乙個小時三道題來回看 最後t2有思路,還剩乙個小時,瘋狂碼碼碼拍拍拍,由於生成的資料k太大過水,以為ac了。t3真的算棄了。t1對於 a i 0 的情況,順序沒有影響,排序後...

省選模擬34

然後再線段樹分治一下 code include define int long long overflow memory limit define rint signed define lson rt 1 define rson rt 1 1 define inf 0x3f3f3f3f3f3f3f3...

省選模擬 19 09 11

ps.博主趁資訊課摸魚考的暴零模擬 看門人憑感覺就知道是長鏈剖分,將路徑查分一下,dis u di sv 2 dis lc adis u dis v 2 dis disu disv 2 disl ca 維護fu,if fu,i 表示u的子樹,深度為 i 的點的 dis disdi s最大值 考慮如何...