BZOJ2006 [NOI2010]超级钢琴
发布日期:2022-02-07 06:39:32
浏览次数:6
分类:技术文章
本文共 2420 字,大约阅读时间需要 8 分钟。
题目大意:给定一个序列,求出k个这个序列的位置不完全相同的子序列,使得每一个子序列的长度均在[l,r]内,并且使得这些子序列的权值和最大。
思路:每一个子序列的权值和可以转化为两个前缀和之差。我们考虑以每一个位置为结尾的子序列,它的权值和可以看作是以该位置为结尾的前缀和减去它前面的某个前缀和。
那么想要这个子序列的权值和尽量大,那么就要前面的那个前缀和尽可能小。如果数目不够,就第2小。再不够,就第3小。
于是我们维护一个全局堆,分别表示以每个位置为结尾的最大子序列权值和,每次取出堆顶时再放进堆中一个结尾位置相同的第k+1大的权值和。
这样k次就能出解。
这要求我们能够快速求出区间第k小,利用可持久化线段树即可。
时间复杂度O(klogn).
Code:
#include
转载地址:https://blog.csdn.net/wyfcyx_forever/article/details/40400327 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年03月31日 10时04分59秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剖析PHP中的输出缓冲
2019-04-27
HTTP响应头不缓存
2019-04-27
phpize
2019-04-27
PHP安装eAccelerator
2019-04-27
PHP新的垃圾回收机制:Zend GC详解
2019-04-27
linux上使用strace查看C语言级别的php源码【一种方法】
2019-04-27
ACCEPT()和ACCEPT4()
2019-04-27
php内核探索方法与资源
2019-04-27
PHP安装扩展mcrypt以及相关依赖项 【PHP安装PECL扩展的方法】
2019-04-27
Javascript到PHP加密通讯的简单实现
2019-04-27
德国SNS交友/视频网站Poppen.de的技术架构分享
2019-04-27
UNIX环境编程
2019-04-27
一笔画问题【数据结构-图论】
2019-04-27
红黑树
2019-04-27
安装多个gcc
2019-04-27
Linux0.01内核根目录Makefile注释
2019-04-27
【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
2019-04-27
PHP对于浮点型的数据需要用不同的方法去解决
2019-04-27
Tokyo Cabinet 安装
2019-04-27
Flink在美团的应用与实践听课笔记
2019-04-27