【省選模擬】20/05/31

Sol

AA

  • 考慮每個位置有個被最早染黑的時間,求的就是這些時間的第 kk
    minmaxminmax 容斥一下,就是求
    T(T1k1)(1)Tk(n+12)(n+12)coef(T)\sum_{T\neq \empty}\binom{|T|-1}{k-1}(-1)^{|T|-k}\frac{\binom{n+1}{2}}{\binom{n+1}{2}-coef(T)}
    其中 coefcoef 是不包含集合 TT 的區間個數,考慮 dpi,j,kdp_{i,j,k} 表示當前選到 iiT=j|T|=jcoef(T)=kcoef(T)=k 的方案數,狀態很少 O(n5)O(n^5) 可以通過

  • 考慮一個複雜度更好看但肯定跑不過 n5n^5 的做法,我們先把轉移寫出來
    dpi,j,k=l<idpl,j1,k(il2)dp_{i,j,k}=\sum_{l<i}dp_{l,j-1,k-\binom{i-l}{2}}
    考慮寫成這樣的形式
    Fi,j=l<iFl,j1x(il2)F_{i,j}=\sum_{l<i}F_{l,j-1}*x^{\binom{i-l}{2}}
    代入 (n+12)+1\binom{n+1}{2}+1 個點值就可以插出原多項式,注意到我們強制在最後放一個 n+1n+1,那麼只需要對 Fn+1,1...n+1F_{n+1,1...n+1}n+1n+1 個多項式進行 idftidft,複雜度 O(n3logn)O(n^3\log n)
    回到上面的轉移,發現是個卷積的形式,即
    Fi,j=l=0iFl,j1coefilF_{i,j}=\sum_{l=0}^iF_{l,j-1}coef_{i-l}
    由於代的是點值,所以 coefcoef 可以預先算出來
    我們將 coef,Fj=0coef,F_{j=0} dftdft,點乘轉移,複雜度 O(n2)O(n^2)
    考慮最後只需要知道 xn+1x^{n+1} 的係數,所以我們只需要對 Fn+1,j=1...n+1F_{n+1,j=1...n+1} 暴力 O(n)O(n) idftidft 回去
    所以可以在 O(n4)O(n^4) 的時間解決這個問題

BB

  • 考慮如何暴力 DPDP,我的做法是記錄 dpu,vdp_{u,v} 表示 uu 的子樹,從 vv 接上來一條還沒有匹配的鏈(v=0v=0 表示 uu向上的邊斷掉)
    發現當 v0v\neq 0 時,會將每個子樹的 dpdp 值乘上 tvdpt,0\prod_{t\neq v}dp_{t,0} 然後合併上去(用線段樹合併簡單維護)
    v=0v=0 時,先考慮子樹中一個點和 uu 拼接,可以在線段樹中查詢 \ge 某個值的 dpdp 和還有一個 tvdpt,0\prod_{t\neq v}dp_{t,0} 的係數,考慮兩個子樹的拼接,假設 dpv,0=0dp_{v,0}=0vvkk

  • k>2k>2 時不存在這種情況
    k=2k=2 時,兩個都必須選才會有值,必定存在一個輕兒子,我們 dfsdfs 那個輕兒子
    k=1k=1 時,它必須選,若它是重兒子,我們 dfsdfs 所有輕兒子,否則我們 dfsdfs 除它以外的輕兒子,然後 dfsdfs 它自己與重兒子拼接
    k=0k=0 時, dfsdfs 所有輕兒子並考慮與前面的拼接,dfsdfs 完後將它的線段樹合併上去

CC

- 考慮

  • 以下 nn 是原問題的 n1n-1,卡特蘭數用 caticat_i 表示,我們對 2n2n 個置換統計不動點個數
  • 容易發現,當 nn 爲偶數時,置換個數必須爲偶數
    nn 爲奇數時,對角線可能匹配,此時的不動點個數是 ncatn12n*cat_{\frac{n-1}{2}}
    設環的個數爲 2d2d,環的大小爲 ee,考慮求出 fdf_d 表示有 2d2d 個環的方案數
    我們枚舉與 1 號相連的點 2i2i,它們中間的連邊方式爲 cati1cat_{i-1},並且可以確定 ii 個環的連邊方式,於是有
    fd=2i=1dfdicati1,f0=1f(x)=2f(x)cat(x)+1f_d=2\sum_{i=1}^df_{d-i}cat_{i-1},f_0=1\\ f(x)=2f(x)cat(x)+1
    cat(x)=cat(x)2+1=114x2xcat(x)=cat(x)^2+1=\frac{1-\sqrt{1-4x}}{2x} 可以得到 f(x)=(14x)12f(x)=(1-4x)^{-\frac{1}{2}}
    將其泰勒展開可以知道 [xi]f=(2ii)[x^i]f=\binom{2*i}{i},所以可以 O(σ0(n))O(\sigma_0(n)) 計算答案
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章