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

证明来源

问题形式:给定长度为 n 的序列,要求选出一些位置,使这些位置满足限制条件 T,其中 T 满足性质:“若长为 k 的序列 A 满足条件,那么序列 AAA 也满足条件”,选出第 i 个位置的收益是 f(imodk),求最大收益。

关键在于证明一个引理:最优解一定存在长度为 k 的循环节。证明如下:

假设 nmod(x+y)0, 等于 0 是 trivial 的。则把 1n 分为若干个段, 从左往右, 第奇数个段 (下标从 1 开始) 的长度是余数 r, 偶数段的长度是 x+yr, 共有奇数个段。

dlti 表示把所有与第 i 个段的下标奇保性相同的段全部改为 i, 序列总权值的变化量 (不考虑合不合法)。显然 kdlt2k+1= kdlt2k=kdltk=0 。我们想证明的, 其实是 x,dltx+dltx+10 ,反证, 假设不存在, 即 x,dltx+dltx+1<0, 则

  • dlt2+dlt3<0,dlt4+dlt5<0,, 可以得到 i1dlti<0 。但 dlti=0, 因此 dlt1>0

  • dlt1+dlt2<0,dlt4+dlt5<0,, 可以得到 i3dlti<0 。 但 dlti=0, 因此 dlt3>0

  • 以此类推得到 k,dlt2k+1>0

kdlt2k+1=0 矛盾。证毕。

有长度为 k 的循环节,一切就都好做了。

本文作者:CharlieVinnie

本文链接:https://www.cnblogs.com/Charlie-Vinnie/p/17847680.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   CharlieVinnie  阅读(69)  评论(4编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起