灵感来源

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

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

  1. nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】

    循环小数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 我们可爱的 c小加 近段儿正在潜心研究数学,当他学习到循环小数这一部分时不是太明白循环体是什么意思(比如说3 ...

  2. poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】

    Period Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 14653   Accepted: 6965 Descripti ...

  3. HDU3977(斐波那契数列模n的循环节长度)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...

  4. 蓝桥杯-循环节长度-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  5. xdu_1077:循环节长度

    题意很简单,就是给出p,q,求p/q的循环节长度. 由循环小数的循环部分的值等于等比数列求和的值S,列公式得到最简分数分母的值.最终得10^x%q==1(其中q为经过modify之后的值).搞清这些之 ...

  6. Java求循环节长度

    两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.比如,11/13=6=>0.846153846153.....  其循环节为[846153] 共有6位.下面的方法,可以求出循环节的长 ...

  7. xdoj--1077: (循环节长度)

    1077: 循环节长度 时间限制: 1 Sec  内存限制: 128 MB提交: 103  解决: 37[提交][状态][讨论版] 题目描述 数一有很多的有理数,然而有的是有限小数,如1/2=0.5, ...

  8. HDU 3746 Cyclic Nacklace(求补齐循环节最小长度 KMP中next数组的使用 好题!!!)

    Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. AC日记——计算循环节长度 51nod 1035

    最长的循环节 思路: 我们尝试一种最简单的方法,模拟: 如何模拟呢? 每个数,对它模k取余,如果它的余数没有出现过,就补0继续模: 所以,当一个余数出现两次时,当前的长度即为循环节长度: 来,上代码: ...

  10. Uva 12012 Detection of Extraterrestrial 求循环节个数为1-n的最长子串长度 KMP

    题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=3163">点击打开链接 题意: ...

随机推荐

  1. jsp中的一些问题

    jsp里的${pageContext.request.contextPath} 在JSP中,${pageContext.request.contextPath}是一个EL表达式(Expression ...

  2. Angular与AngularJS区别

    简单介绍 目前 Angular 2 到現在 Angular 11 都是十分穩定的改版,不再出現之前 Angular 1.x 到 Angular 2.x 的哀鴻遍野. 因此目前市面上確實同時存在著兩種差 ...

  3. 【双系统】Win10/Win11 引导 Ubuntu

    目录 纲要 注意 写在最前 1. Win 分区 2. Ubuntu刻盘 3. 安装 Ubuntu 4. 配置引导 纲要 本文主要介绍了如何在已安装 Win10/Win11 前提下安装 Ubuntu 双 ...

  4. 从零开发Java入门项目--十天掌握

    ​ 原文网址:从零开发Java入门项目--十天掌握_IT利刃出鞘的博客-CSDN博客 简介 这是一个靠谱的Java入门项目实战,名字叫蚂蚁爱购.从零开发项目,视频加文档,十天就能学会开发Java项目, ...

  5. KRPano中文教程文档PDF版本下载

    KRPano中文教程文档PDF版本下载 下载地址:https://pan.baidu.com/s/1qXIZ2os 感谢KRPano技术解密群小伙伴:斌仔分享 中文文档目录: 概述文件说明krpano ...

  6. python url中文转码_python实现转换url编码的方法

    python url中文转码_python实现转换url编码的方法 urllib.parse命令:url编码转换 >>> import urllib.parse >>&g ...

  7. npm install xxx 后加上-s、-d、-g之间的区别?

    1.npm install xxx -s npm install xxx -s.npm install xxx -S是npm install xxx --save的简写形式 局部安装,记录在packa ...

  8. DevOps|破除壁垒,重塑协作-业务闭环释放产研运协作巨大效能

    - 会议太多了,员工开会效率降低了50%! 上篇文章<研发效能组织架构:职能独立vs业务闭环>介绍了职能独立型组织架构和业务闭环型组织架构的特点,优劣势.也许有的小伙伴可能对这两种组织架构 ...

  9. 《流畅的Python》 读书笔记 231007(第二章第一部分)

    第2章 数据结构 ABC语言是Python的爸爸~ 很多点子在现在看来都很有 Python 风格:序列的泛型操作.内置的元组和映射类型.用缩进来架构的源码.无需变量声明的强类型 不管是哪种数据结构,字 ...

  10. RabbitMQ——RabbitMQ面试题

    文章目录 为什么使用MQ?MQ的优点 消息队列有什么优缺点?RabbitMQ有什么优缺点? 你们公司生产环境用的是什么消息中间件? Kafka.ActiveMQ.RabbitMQ.RocketMQ 有 ...