关于一类最优解存在长度为 $k$ 的循环节的问题
问题形式:给定长度为 \(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$ 的循环节的问题的更多相关文章
- nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】
循环小数 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描述 我们可爱的 c小加 近段儿正在潜心研究数学,当他学习到循环小数这一部分时不是太明白循环体是什么意思(比如说3 ...
- poj 1961 Period【求前缀的长度,以及其中最小循环节的循环次数】
Period Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 14653 Accepted: 6965 Descripti ...
- HDU3977(斐波那契数列模n的循环节长度)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3977 题意:求斐波那契数列模p的循环节长度,注意p最大是2*10^9,但是它的素因子小于10^6. 分析过 ...
- 蓝桥杯-循环节长度-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- xdu_1077:循环节长度
题意很简单,就是给出p,q,求p/q的循环节长度. 由循环小数的循环部分的值等于等比数列求和的值S,列公式得到最简分数分母的值.最终得10^x%q==1(其中q为经过modify之后的值).搞清这些之 ...
- Java求循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位.下面的方法,可以求出循环节的长 ...
- xdoj--1077: (循环节长度)
1077: 循环节长度 时间限制: 1 Sec 内存限制: 128 MB提交: 103 解决: 37[提交][状态][讨论版] 题目描述 数一有很多的有理数,然而有的是有限小数,如1/2=0.5, ...
- HDU 3746 Cyclic Nacklace(求补齐循环节最小长度 KMP中next数组的使用 好题!!!)
Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- AC日记——计算循环节长度 51nod 1035
最长的循环节 思路: 我们尝试一种最简单的方法,模拟: 如何模拟呢? 每个数,对它模k取余,如果它的余数没有出现过,就补0继续模: 所以,当一个余数出现两次时,当前的长度即为循环节长度: 来,上代码: ...
- Uva 12012 Detection of Extraterrestrial 求循环节个数为1-n的最长子串长度 KMP
题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=3163">点击打开链接 题意: ...
随机推荐
- Django:django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported.
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/' ...
- vue3 + ElementPlus 封装函数式弹窗组件
需求场景:弹窗组件需要支持自定义的插槽内容,删除的弹窗也要使用这个组件,只是样式不一样而已,希望在父组件使用删除弹窗的时候直接调用某个方法就可以显示弹窗 组件模拟 cuDialog 假设我的弹窗组件有 ...
- jQuery Mobile 使用中的问题
1.点击data-role="page"内的页面,会自动隐藏头部栏和尾部栏. 在data-role="header"或data-role="foote ...
- 集训后的一些wp
新生赛后 0x01 2048(jk出发) 修改跳转条件为nop,随便动一下直接打印flag.这个场景我幻想过很久了,一直没做到,这次参考wp做出来了知道怎么做了.学到! 0x02 four(dsact ...
- ESP32C3 LEDC_PWM
LEDC_PWM LED 控制器 (LEDC) 主要用于控制 LED,也可产生 PWM 信号用于其他设备的控制,ESP32C3有 6 路通道.设置 LEDC 通道分三步完成.与 ESP32 不同 ...
- 知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - Python 操作
数据基于: 知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL - 太极拳传承谱系表 这是一个非常简单的web应用程序,它使用我们的Movie图形数据集来提供列表 ...
- 怎么选择API接口来获取自己想要的数据
在今天的数字时代,数据变得越来越重要,API接口也成为了获取数据的一种重要方式.无论是开发自己的应用程序还是进行市场营销,数据的获取都是非常必要的.但是,如何选择API接口来获取自己想要的数据呢? 以 ...
- Vue3+vite路由配置优化(自动化导入)
今天在维护优化公司中台项目时,发现路由的文件配置非常多非常乱,只要只中大型项目,都会进入很多的路由页面,规范一点的公司还会吧路由进行模块化导入,但是依然存在很多文件夹的和手动导入的问题. 于是我想到了 ...
- C#开源且免费的Windows桌面快速预览神器 - QuickLook
前言 今天给大家推荐一款由C#开源且免费的Windows桌面快速预览神器:QuickLook. 工具介绍 QuickLook是一款在Windows操作系统上的实用工具,它提供了一种快速预览文件内容的方 ...
- 在Go中如何实现并发
Go语言的并发机制是其强大和流行的一个关键特性之一.Go使用协程(goroutines)和通道(channels)来实现并发编程,这使得编写高效且可维护的并发代码变得相对容易.下面是Go的并发机制的详 ...