08.02

purplevine發表於2024-08-04

QOJ8047 DFS Order 4

先考慮如何判斷一個一個 \(p\) 的合法性。

如果 \(p_{i-1}<p_i\),把 \(p_i\) 掛到 \(p_{i-1}\) 下方;否則在 \(p_{i-1}\) 的祖先集合中取一個點 \(u\) 滿足 \(u<p_i\)\(u\) 最深,把 \(p_i\) 掛到 \(u\) 父親下面。

現在連出來的樹,不僅兒子遞增,而且對於第 \(i\) 個兒子 \(u_i\) 的最後一個兒子 \(v_i\)\(v_i < u_{i+1}\)

做一些容斥使得限制變成外向樹(森林?)。然後記錄 \(\prod 1/siz_i\) 轉移。

?

\(\sum [p_i>p_{i+1}]\):用二項式反演進行欽定。

每一段遞減序列,一定恰一個字首滿足 \(p_i>i\),一個字尾不滿足。

從後往前按連續遞減段 dp,同時列舉 \(p_i=i\) 的斷點,用容斥來處理本質上位於一個 \([x, n]\) 區間的點。

一個矩形內的點可以不按有序算,因為只有一種方案,除去長度的階乘就行了。

\(d_{i, x, y, a}\)\(x\)\([p_i>i]\),欽了 \(y\) 個位置,後面估計要記一些與容斥相關的東西,不是很會。

agc039F

考慮每行最小值 \(a_i\) 和每列最小值 \(b_i\),從小到大列舉 \(t\),如果有 \(x\)\(y\) 列的最小值為 \(t\),對答案的貢獻為 \(t^{xn+yn-xy}\)

為了保證恰好,轉而容斥 \([\geq x] - [\geq x+1]\)。假設容斥了一共 \(t\) 行,容斥係數就是 \((-1)^t\)

那麼進行 dp。\(f_{i, j, t}\):已經填了 \(i\)\(j\) 列,填完了所有 \(\leq t\) 的數值,當前的值乘上容斥係數的和。

轉移時分步進行即可做到 \(O(n^4)\)

QOJ5089

考慮 \([x^0][y^i] F(x, y) = \prod(1+x^{\{u_i, v_i\}}y)\),其中 \(x\) 這一維的乘法是集合對稱差操作,\(y\) 這一維是加法卷積。

\(x\) 這一維進行 FWT,求 \([x^0]F = \frac{1}{2^n} \sum_S [x^S] FWT(F)\),又有 \([x^S]FWT(F) = \prod [x^S] (1+x^{\{u_i, v_i\}}y)\),每一項恰好是一個 \(1-y\) 或一個 \(1+y\),取決於 \(u_i,v_i\) 中位於 \(S\) 集合的點的個數。這是可以 \(O(2^n)\) 預處理的。列舉有多少個 \(S\) 共有 \(a\)\(1+y\),即可得到 \([x^0]F\)。做狀壓 dp 好像就行,每次加入新點時算一下貢獻變化。

uoj390