8.2 模擬賽

QcpyWcpyQ發表於2024-08-05

總結

今天的暴力打的還行

T1 的卷積最佳化 dp 是真不會。

T2 正解如果花時間是好想的,賽時在做 t3。

t3 會了性質,但是不會維護。

t4 亂搞。


題解

monster

暴力 dp 顯然,考慮最佳化。

\(f_{i,j}\) 表示選了 \(i\) 個非負整數,和為 \(j\) 的最大的 \(\sum s\),直接做揹包是 \(\mathcal O(nm^2)\) 的。

此時 dp 狀態和 \(a\) 無關。發現我們只需求最終的 \(f_{n,*}\),那麼在 \(f_{i,*}\) 的基礎上有

  • \(\mathcal O(m^2)\) 暴力加入一個元素,即 \(f_{i+1,j}=\max(f_{i,k}+s_{j-k})\),轉移到 \(f_{i+1,*}\),暴力 dp 做了 \(n\)​ 次這個操作。
  • \(\mathcal O(m^2)\)\(f_{i,*}\) 和自身做一個 \((\min,+)\) 卷積,即 \(f_{2i,j}=\max(f_{i,k},s_{j-k})\),轉移到 \(f_{2i,*}\)

path

對於 DAG 的部分分,如果 \(s\) 能到 \(t\),則每一步都貪心選能到 \(t\) 的字典序最小的點。

發現可以直接推廣到不是 DAG 的情況,如果這樣走出了環,就說明存在長度無限大的理想路徑。

即可以在一個每個點都能到達 \(t\)​ 的環中一直走,且過程中走任意合法出邊都會使得字典序變大。

那麼對於每個 \(t\) 建立反圖,預處理每個點走一條出邊後能到達的後繼。對於一組詢問,處理使得不存在理想路徑的情況。

倍增回答詢問,時間複雜度為 \(\mathcal O(n(n+m)+(n^2+q)\log n)\)

apple

回答單次詢問。手玩發現判定規律:

先將區間全部 \(-1\),若修改完後可以多次將序列的相鄰兩項 \(-1\) 後使得序列全為 \(0\) 則合法。

區間詢問只需要分奇偶討論,對區間內的 \(b_i\) 加或減 \(b_{l-1}\) 即可。由貪心得,若 \(b_i<0\)\(b_r\neq0\) 則無解,否則有解。

用線段樹分別維護偶數位置和奇數位置的最小值即可。 時間複雜度為 \(\mathcal O(q\log n)\)

sale

0/1 分數規劃,令 \(p_{i,j}=d_id_j\),二分答案 \(x\),即判定是否存在一個 \(p\),滿足

\[\sum_{i=1}^n\sum_{j=1}^n\left([i\neq j]a_ia_j\right)p_{i,j}-\sum_{i=1}^n(a_i^2x)p_{i,i}>0 \]

最大化左邊的式子即可完成 check,使用網路流,關於 \(p\) 跑最大權閉合子圖即可。時間複雜度為 \(\mathcal O(n^4|\log\epsilon|)\)\(\epsilon\) 是二分的精度。