2021/11/17 & 2021/11/18 集訓補題
/kk,要退役了,最後2天還是象徵性地記錄一下考試補題吧。/kk
2021/11/17 T1 春節十二響
Solution
考試的時候想了1個半小時,感覺自己智商下降地越來越快了。/kk
我們發現我們直接樹上啟發式合併就做完了,因為子樹之間互不影響,而你子樹的根也不能和子樹內的點放在一起。
複雜度是 \(\Theta(n\log^2 n)\) 的。
2021/11/17 T3 Severus
Description
有一個 \(n\) 的個點的樹,有 \(m\) 次操作,每次為以下兩種之一(集合為可重集):
-
給 \(u\to v\) 的路徑上的每個點的集合都加入 \(w\) 。
-
求給出 \(k\)
\(n,m\le 10^5,\sum k\le 5\times 10^5\)
Solution
很愚蠢,但是我又沒有看出來。/kk 真的要退役了
我們可以發現的是,兩個路徑的交點一定包含兩者中的一個 lca,然後我們就做完了。注意 \(\sum k\) 只能帶一隻 \(\log n\)。
umi
Description
定義一個序列為好的,當且僅當一個顏色都在同一個段裡面。
給你一個序列,每次操作你可以將某顏色 在序列上的所有位置改成另一顏色,使得最終序列是好的。
我們定義代價為最終序列與原序列不同的位置數量(不是操作次數)。
有 \(T\) 次詢問,每次將一個位置進行修改,問修改後的答案。
\(n\le 2\times 10^5\)
Solution
我們發現對於顏色 \(c\) 求出出現左端點 \(l_c\),出現右端點 \(r_c\),那麼區間 \([l_c,r_c]\) 必定被染成相同顏色。
我們設 \(b_i\) 為 \(i,i+1\) 都被 \([l_c,r_c]\) 都被包含的 \(c\) 的個數。那麼 \(b_i=0\) 的時候 \(i\) 一定是一個相同顏色區間的右端點。而一個區間的貢獻就是大小減去出現次數最多的顏色的出現個數。前者綜合為 \(n\),我們直接求後者即可。
我們將 \([l_c,r_c]\) 中 \(c\) 的出現個數賦值到 \(l_c\) ,那麼,一個區間的貢獻就是區間值的最大值,也即是說,我們求出 \(b_i=0\)
考慮怎麼維護,實際上我們可以維護區間 \(b_i\) 最小值,值的最大值,最左邊最小值及左的值的最大值,最右邊最小值及右的值的最大值,以及會產生的貢獻和。
複雜度 \(\Theta(n\log n)\) 的。