題意:求 ∑_{i=0}^{n-1} ∑_{j=0}^{m-1} max((i xor j) - k, 0)。
思路:異或運算各位獨立,逐位計算貢獻。狀態 f[i][a][b][c] 表示處理到第 i 位,i、j、i xor j 分別與 n, m, k 的大小關係(0: 小於, 1: 相等, 2: 大於)。高位向低位轉移,枚舉當前位 0/1,更新狀態與答案。複雜度 O(log max(n,m,k))。
題意:給定 n 種數字,第 i 種值 a_i、數量 b_i、權值 c_i。若 a_i | a_j 且 a_i / a_j 為質數,則配對獲得 c_i * c_j 價值。求總價值 ≥ 0 時的最大配對數。
思路:配對關係構成二分圖,建費用流網絡。源點連左部(c_i > 0),右部連匯點(c_i < 0),邊容量為數量,費用為乘積。依序增廣,當累積費用變負時回退最後一次增廣量,輸出當前流量。複雜度取決於費用流實現,通常 O(F * E log V)。
題意:樹上點權、邊權。操作 1:路徑上點權取 min(v[x], a * dis[x] + b),dis[x] 為到起點距離。操作 2:查詢路徑最小點權。
思路:修改視為向區間加入線段(斜率 a、截距 b)。線段樹維護區間內最優線段,插入時比較左右端點與中點優劣,遞歸下推,複雜度 O(log² n)。查詢取區間存儲線段與端點最小值,O(log n)。結合重鏈剖分,總複雜度 O(n log³ n)。dis 陣列未知,插入時帶入 LCA 計算。
題意:字串尾部逐字符添加,每次輸出當前不同非空子串數。
思路:反轉字串建後綴陣列,總子串數 = n(n+1)/2 - ∑ height[i]。維護 rank 值的權值線段樹,動態插入後綴,查詢前驅後繼,利用 LCP 更新答案。單次操作 O(log n)。
題意:長度 n 排列,恰好 m 個固定點(a[i]=i),求方案數模 1e9+7。
思路:選 m 個固定點 C(n,m),剩餘 n-m 個錯排 f[n-m]。錯排遞推 f[i] = (i-1)*(f[i-1]+f[i-2])。預處理階乘與逆元,單次查詢 O(1)。
題意:長度 n 序列分 m 段,求 m² * 方差 最小值。
思路:展開公式得等價於最大化分段平方和。前綴和 a[i],DP f[j][i] = max_{k。斜率優化決策單調隊列,複雜度 O(n m)。
SDOI 2016 Round 1 題目涵蓋數位 DP、最小費用流、樹上斜率優化、後綴自動機、組合數學、DP 斜率優化等進階技巧,極具代表性,適合系統性鞏固算法功底。