1. 程式人生 > 其它 >12.5 ~ 12.11 總結

12.5 ~ 12.11 總結

12.5 ~ 12.11 總結

UOJ450【集訓隊作業2018】復讀機

\(k\) 個物件,\(n\) 個操作,每次操作選一個物件出來,需要滿足每個物件最後出現了 \(d\) 的倍數次。問方案數。\(d \le 3, n \le 10^9, k \le 5\times 10^5\)

指數型生成函式。

  • \(d = 1\)\(F(x) = e^{kx}\),答案就是 \(k^n\)
  • \(d = 2\),構造 $ F(x) = (\dfrac{e^{x} + e^{-x}}{2} ) ^ k$ 表示
    \((\{1,1,1,1,\dots \}\) + \(\{1,-1,1,-1,\dots\} ) / 2\)

    二項式定理展開可以得到 \(\sum_{i+j=k} e^{2i-k} \dbinom{k}{i}\)\(n\) 次項係數是容易的。
  • \(d = 3\),使用單位根 \(\omega\),滿足 \(\omega ^ 2 + \omega + 1 = 0\)
    構造 \(F(x) = (\dfrac{e^x + e^{wx} + e^{w^2 x}}{3} ) ^ k\)
    注意到可以暴力算卷積,\(\sum\limits_{i+j+l=k} ...\)

11 B

每個位置有一個顏色,求區間內顏色相同兩個數的最小距離。 \(n\le 5\times 10^5\)

使用 \(i-p_i\)

更新答案,這樣需要滿足 \(p_i \ge l\), 掃描線隨便搞搞。

11 C

每個點可以向左邊或者右邊相聚 \(k\) 人傳遞能量,要求最後每個人到達平均值,保證可以,問最小傳遞次數。 \(n\le 10^5\)

把每個環拉出來就是 平衡負載問題

考慮每個點 \(i\) 最終向右邊給 \(x_i\) 個。
有這樣 \(n-1\) 個方程

\[a_1 + x_n - x_1 = aver \] \[a_2 + x_1 - x_2 = aver \] \[a_3 + x_2 - x_3 = aver \] \[\dots \] \[a_n + x_{n-1} - x_n = aver \]

\(x_1\)

為主元。

\[x_1 = x_1 \] \[x_2 = a_2 + x_1 - aver \] \[x_3 = a_3 + a_2 + x_1 - aver \] \[x_4 = a_4 + a_3 + a_2 + x_1 - aver \]

不妨設 \(c_i = \sum\limits_{j=2}^{i}a_j - aver\)

就是要找到一個 \(x_1\)\(\sum_{|c_i - x_1|}\) 最小,取中位數就好了。

群論

HDU1883

給一些點,問一個 \(r\) 的圓最多能覆蓋多少點。 \(n\le 2000\)

答案最後可以使得一個點在圓上,那麼圓心就是一個圓,每個合法的可以被這個圓覆蓋到的是一段弧,離散下來然後差分字首和一下。