『網賽總結』Day11

LCat90發表於2024-08-21

寒假以來?包括補題和 VP。

CF

1. CF1982()

C

dp + 資料結構最佳化 / 貪心。

D

轉化成解方程。裴蜀定理。

E

分治。每次簡化 1/2。

\(f(n, k) = f(m, k) + f(n - m, k - 1), m = 2^x, m < n, m(Max)\)。然後再算一算中間的數量即可。

F

維護序列 \(a_i>a_{i+1}\)。找到不滿足條件的最大區間 \([l,r]\),顯然要答案區間包含它並且使得值域連續,這裡根據最大值最小值 ds 上二分即可(因為前後都是遞增的)。

2. CF1989

B

LCS 變形。

C

二分後簡單貪心。

D

遞迴實現被 hack 了。

先一次操作使得 \(c_i\)\(10^6\) 範圍內,考慮 dp。

不妨按照限制從小到大 dp,每次轉移不能暴力,由於前面所有狀態可以轉移,並且都是 +1,故 dp 陣列單調,維護 \(a-b\) 的最大值作為 \(V_{now}\) 即可。

E

有個 dp 用第 \(k+1\) 維表示大於 \(k\) 的維的總答案的 trick。

本質上我們只關心相同數構成的塊的狀態。至少出現 \(k\) 個數說明段數大於等於 \(k\)

字首和最佳化 dp。注意特殊情況:不在開頭或者結尾的長為 \(2\) 的段。因為還原在 \(b\) 裡面是 2 個 1。會和分成 2 個 1 的段重複計算。

3. CF1983

B

  1. 對每個 \(2\times 2\) 的矩陣操作,易證成立。

  2. 結論:每行每列關於 \(3\) 同餘。

C

可以暴力確定前面和後面的分界點,判斷中間是否成立即可。

D

不妨 \(r=l+1\),發現所有 \(r>l\) 的情況都可以分解成多個 \(r=l+1\) 的操作。

考慮直接排序,一個陣列排完過後一直 1 2 跳即可。發現只要奇偶性不變就可以。

又知這樣子排序的交換次數是逆序對個數,bit 計算。

E

F

不難想到二分答案然後對滿足條件的計數。(trie 上可以實現計算小於等於一個數的資訊)

掃描 \(r\),trie 上每個節點維護最後一次到達的下標 \(lst_x\),就是所有滿足小於等於二分值的 \(lst_x\) 的最大值。(在這個點前面一定能取到最小值)

不要忘記保留歷史版本的 \(lst\) 最大值。