-
考慮每個位置有個被最早染黑的時間,求的就是這些時間的第 大
容斥一下,就是求
其中 是不包含集合 的區間個數,考慮 表示當前選到 ,, 的方案數,狀態很少 可以通過 -
考慮一個複雜度更好看但肯定跑不過 的做法,我們先把轉移寫出來
考慮寫成這樣的形式
代入 個點值就可以插出原多項式,注意到我們強制在最後放一個 ,那麼只需要對 共 個多項式進行 ,複雜度
回到上面的轉移,發現是個卷積的形式,即
由於代的是點值,所以 可以預先算出來
我們將 ,點乘轉移,複雜度
考慮最後只需要知道 的係數,所以我們只需要對 暴力 回去
所以可以在 的時間解決這個問題
-
考慮如何暴力 ,我的做法是記錄 表示 的子樹,從 接上來一條還沒有匹配的鏈( 表示 向上的邊斷掉)
發現當 時,會將每個子樹的 值乘上 然後合併上去(用線段樹合併簡單維護)
當 時,先考慮子樹中一個點和 拼接,可以在線段樹中查詢 某個值的 和還有一個 的係數,考慮兩個子樹的拼接,假設 的 有 個 -
當 時不存在這種情況
當 時,兩個都必須選才會有值,必定存在一個輕兒子,我們 那個輕兒子
當 時,它必須選,若它是重兒子,我們 所有輕兒子,否則我們 除它以外的輕兒子,然後 它自己與重兒子拼接
當 時, 所有輕兒子並考慮與前面的拼接, 完後將它的線段樹合併上去
- 以下 是原問題的 ,卡特蘭數用 表示,我們對 個置換統計不動點個數
- 容易發現,當 爲偶數時,置換個數必須爲偶數
當 爲奇數時,對角線可能匹配,此時的不動點個數是
設環的個數爲 ,環的大小爲 ,考慮求出 表示有 個環的方案數
我們枚舉與 1 號相連的點 ,它們中間的連邊方式爲 ,並且可以確定 個環的連邊方式,於是有
由 可以得到
將其泰勒展開可以知道 ,所以可以 計算答案