問題形式:給定長度為 \(n\) 的序列,要求選出一些位置,使這些位置滿足限制條件 \(T\),其中 \(T\) 可以表述為一個長度為 \(k\) 的環滿足條件 \(T'\),選出第 \(i\) 個位置的收益是 \(f(i\bmod k)\),求最大收益。
關鍵在於證明一個引理:最優解一定存在長度為 \(k\) 的迴圈節。證明如下:
假設 \(n \bmod (x+y) \neq 0\), 等於 0 是 trivial 的。則把 \(1 \sim n\) 分為若干個段, 從左往右, 第奇數個段 (下標從 1 開始) 的長度是餘數 \(r\), 偶數段的長度是 \(x+y-r\), 共有奇數個段。
設 \(d l t_i\) 表示把所有與第 \(i\) 個段的下標奇保性相同的段全部改為 \(i\), 序列總權值的變化量 (不考慮合不合法)。顯然 \(\sum_k d l t_{2 k+1}=\) \(\sum_k d l t_{2 k}=\sum_k d l t_k=0\) 。我們想證明的, 其實是 \(\exists x, d l t_x+d l t_{x+1} \geq 0\) ,反證, 假設不存在, 即 \(\forall x, d l t_x+d l t_{x+1}<0\), 則
-
\(d l t_2+d l t_3<0, d l t_4+d l t_5<0, \ldots\), 可以得到 \(\sum_{i \neq 1} d l t_i<0\) 。但 \(\sum d l t_i=0\), 因此 \(d l t_1>0\) 。
-
\(d l t_1+d l t_2<0, d l t_4+d l t_5<0, \ldots\), 可以得到 \(\sum_{i \neq 3} d l t_i<0\) 。 但 \(\sum d l t_i=0\), 因此 \(d l t_3>0\) 。
-
以此類推得到 \(\forall k, d l t_{2 k+1}>0\) 。
與 \(\sum_k d l t_{2 k+1}=0\) 矛盾。證畢。
有長度為 \(k\) 的迴圈節,一切就都好做了。