关于一类最优解存在长度为 $k$ 的循环节的问题

发布时间 2023-11-21 21:41:34作者: CharlieVinnie

灵感来源

问题形式:给定长度为 \(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\) 的循环节,一切就都好做了。