省選模擬20 題解

2022-03-16 18:57:24 字數 1265 閱讀 5339

似乎算是一道半原題,原題的做法是維護環上的最小編號邊,然後替換。

本題的是否存在環更好維護。

容易發現對於乙個左端點,右端點的答案是單調的。

存在乙個分界點,滿足分界點左側沒有環,分界點右側有環。

因為單調,所以可以在左端點移動的同時,右端點用單調指標維護分界點的位置。

方法是使用lct的$link,cut,findroot$操作進行維護。

如果左端點對應的邊連線的兩個點已經在乙個連通塊,那麼不斷$cut$右端點對應的邊即可。

與$zkw$線段樹的操作類似,將$n$補為$2^k$的形式,滿足$2^k>n$,$2^<=n$。

然後發現交換操作對應著線段樹上乙個節點的更改。

所以直接維護一棵區間修改、區間查詢、標記下傳、動態開點的線段樹即可。

首先將方差轉化為$\frac$的形式。

其中$val$表示該方案中每一項的平方的和,$sum$表示每一項的線性加和。

考慮通過總和/總方案來算得期望值。

設$f_n$表示$2n$個數,對應的總方案數,顯然有$f_n=\prod_^n(2*i-1)$。

這個可以通過$dp$轉移方程$f_n=f_*(2*n-1)$解釋,也可以直接按照搜尋的思想來。

設$w$表示總和中前一項的貢獻。

有$w=f_*n*\sum \limits_^(2*n-i)*i^2$。

其中的$(2*n-i)$表示差值為$i$的點對的個數,$i^2$表示貢獻。

設$s$表示總和中後一項的貢獻。

首先寫出$s$的表示式,為$s=\sum \limits_(\sum \limits_^nx_i)^2$,其中$p$表示列舉狀態。

可以發現這個平方式是可以拆的。

於是變成$s=\sum \limits_(\sum \limits_^n\sum \limits_^nx_ix_j)$。

於是可以考慮每一對$x_i,x_j$,分別統計貢獻。

考慮$i!=j$時的貢獻,首先令$s=f_(\sum \limits_^n(2n-i)i)^2$。

這個式子是錯誤的。

因為對於跨過了同乙個點的情況,是不合法的,也就是沒有任何乙個$x_i,x_j$滿足的。

所以減掉這樣的情況,然後發現$i=j$的情況減了兩次,所以加回來一次,最後統計$i=j$的情況即可。

因為上面乘的是$f_,f_$,下面除掉$f_$,所以沒有必要算出精確值。

容易發現,這堆東西都可以展開成自然數冪和,然後推式子(通過插值偷懶)。

因為這個玩意就是乙個簡單的多項式,直接通過高斯消元消出係數其實也可以(但是本題存在$n^$項係數)。

省選模擬104 題解

a.簽到題 把每個點向它右側比他大的第乙個點之間連邊,如果沒有那麼向 root 連邊。那麼可以構成一棵樹。特判一些情況之後,可以認為問題就是 1.給某節點和它的所有兒子節點權值加上乙個值。2.詢問一條路徑的權值和。首先考慮如果只詢問單點的維護方法,其實就是打乙個標記表示給整個兒子集合都加上了若干權值...

省選模擬102 題解

a.island 對於正負不同的情況,o n 列舉左側的位置然後計算。對於正負性相同的情況,把笛卡爾樹建出來,然後每次考慮跨過最小值的貢獻。分幾種情況 左右均不超過最小值,左右僅有乙個超過最小值,左右都超過最小值。然後順便統計上其中乙個端點為劃分點的貢獻。然後瘋狂的寫式子拆式子就沒了。做法挺簡單的,...

省選模擬101 題解

a.石子遊戲 問題可以簡單轉化為最少能取出多少個數,使得異或和為 k 顯然答案是小於 log a i 的,因為線性基已經可以拼出所有數了。所以可以考慮列舉這個答案,然後就是 dp 表示用 i 個數能否拼出 j 轉移可以用 fwt 優化,暴力做就是兩個 log 的,因為只需要一項所以手動 ifwt 可...