bzoj2006 [NOI2010]超级钢琴 (及其拓展)
给定一个序列,求长度在 \([L,\ R]\) 之间的区间和的前 \(k\) 大之和
\(n\leq5\times10^5,\ k\leq2\times10^5,\ |a_i|\leq10^3\)
贪心,堆
令状态 \((s,\ l,\ r)\) 表示左端点为 \(s\) ,右端点在 \([l,\ r]\) 中,使得区间和最大的右端点
容易发现 \(t=(s,\ l,\ r)\) 即为前缀和在 \([l,\ r]\) 中最大值的位置
假设每次都选最优区间,显然像这样选 \(k\) 次就是最终答案
假设当前最优状态为 \((s,\ l,\ r)\) ,显然不能再取一遍 \([s, t]\) ,但是其他决策可能会出现在 \(t\) 左右两端区间中
因此将 \((s,\ l,\ t - 1)\) 与 \((s,\ t + 1,\ r)\) 加入待选决策点即可
这玩意儿可以用堆来维护
时间复杂度 \(O((n+k)\log n)\)
给定 \(n\) 个非负整数,求两两异或值前 \(k\) 小的数
\(n\leq10^5,\ k\leq2.5\times10^5,\ a_i\in[0,\ 2^{31})\)
贪心,堆,可持久化trie
用上一题的方法解决
令状态 \(t=(s,\ l,\ r)\) 表示左端点为 \(s\) ,右端点在 \([l,\ r]\) 中,使得区间异或值最小的右端点
现在只需考虑如何快速求出 \(t\)
先前缀和一遍, \(t=\displaystyle\max_{l\leq i\leq r}\{sum_i\oplus sum_{s-1}\}\) ,用可持久化trie,记一下每个“叶节点”的编号即可
重题 bzoj5495 [2019省队联测]异或粽子 雾(
时空复杂度 \(O((n+k)\log a_i)\)
这种做法本身自带巨大常数,在bzoj卡了好一会儿常才卡过,洛谷上的只有去掉封装才能过……
然而此题有常数更小的时间复杂度 \(O((n+k)\log a_i)\) ,空间线性的做法,留坑待填……
同时还有形似的(加强版?) CF241B Friends$ 与 CF1055F Tree and XOR 这玩意儿的时间复杂度与 \(k\) 无关……留坑待填……
bzoj2006 [NOI2010]超级钢琴 (及其拓展)的更多相关文章
- bzoj千题计划162:bzoj2006: [NOI2010]超级钢琴
http://www.lydsy.com/JudgeOnline/problem.php?id=2006 输出最大的k个 sum[r]-sum[l-1] (L<=r-l+1<=R) 之和 ...
- BZOJ2006 [NOI2010]超级钢琴 【堆 + RMQ】
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MB Submit: 3446 Solved: 1692 [Submit][Sta ...
- [BZOJ2006][NOI2010]超级钢琴(ST表+堆)
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 3679 Solved: 1828[Submit][Statu ...
- [BZOJ2006] [NOI2010]超级钢琴 主席树+贪心+优先队列
2006: [NOI2010]超级钢琴 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 3591 Solved: 1780[Submit][Statu ...
- bzoj2006 noi2010 超级钢琴 主席树 + 优先队列
Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2435 Solved: 1195 Description 小 Z是一个小有名气的钢琴家,最近C博士送 ...
- BZOJ2006[NOI2010]超级钢琴——堆+主席树
题目描述 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的 音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中 ...
- 【贪心 计数】bzoj2006: [NOI2010]超级钢琴
这么经典的贪心我怎么现在才做啊…… Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的 音乐. 这架超级钢琴可以弹奏出n个 ...
- BZOJ2006——[NOI2010]超级钢琴
1.题意:给一个序列,让你取出k个不同的区间,要求长度在之间,问所有区间和的最大值 2.分析:这道题拿过来就能知道是要拿出前k个最大的区间,我们思考最暴力的做法,就是把这个所有的区间枚举出来算,取出前 ...
- bzoj2006: [NOI2010]超级钢琴
题意:给一个序列(n<=500000),要求选定k个不同区间,使得区间长度在L,R之间,并使得k个区间和之和最大,输出这个最大值. 刚拿到题的时候想的是,对于每个点,如果以它开头,那么之后的L- ...
随机推荐
- ASP.NET的版本?
问题源于这么一本书: <ASP.NET 4 解密(卷1)>,这本书大约是六七年前买的了,根据其名字,它讲述的是ASP.NET 4,那么ASP.NET现在究竟是什么版本?与.NET Fram ...
- mac电脑 上强大的RAW图像处理工具 ——RAW Power
苹果电脑曾经有一款名为Aperture的照片处理应用,最终因为苹果软件策略的更好与升级,这款应用已经被苹果砍掉.但Aperture的开发者们并未放弃这款应用,在Mac OS上推出了一款名为RAW Po ...
- 分享一些 Kafka 消费数据的小经验
前言 之前写过一篇<从源码分析如何优雅的使用 Kafka 生产者> ,有生产者自然也就有消费者. 建议对 Kakfa 还比较陌生的朋友可以先看看. 就我的使用经验来说,大部分情况都是处于数 ...
- Ocelot.JwtAuthorize:一个基于网关的Jwt验证包
Ocelot作为基于.net core的API方关,有一个功能是统一验证,它的作用是把没有访问权限的请求挡在API网关外面,而不是到达API网关事端的API时才去验证:之前我有一篇博文https:// ...
- IntentActionUtil【Intent的常见作用的工具类】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于通过Intent调用手机本地软件打开文件(doc.xsl.pdf.ppt.mp3.mp4等格式).安装apk.发送邮件.拨打 ...
- Python3中性能测试工具Locust安装使用
Locust安装使用: 安装: python3中 ---> pip3 install locust 验证是否安装成功---> 终端中输入 locust --help ...
- 基于SpringBoot实现定时任务的设置(常用:定时清理数据库)
1.构建SpringBoot工程项目 1)创建一个Springboot工程,在它的程序入口加上@EnableScheduling,开启调度任务. @SpringBootApplication @Ena ...
- 前端笔记之JavaScript面向对象(二)内置构造函数&相关方法|属性|运算符&继承&面向对象
一.复习 1.1复习上下文 函数的调用方式 上下文 fun() window obj.fun() obj box.onclick = fun box setInterval(fun,1000) set ...
- Tomcat 对 HTTP 协议的实现(下)
在<Tomcat 对 HTTP 协议的实现(上)>一文中,对请求的解析进行了分析,接下来对 Tomcat 生成响应的设计和实现继续分析.本文首发于(微信公众号:顿悟源码) 一般 Servl ...
- 使用EHPC实现“完美并行”的高效批处理方案
使用EHPC实现“完美并行”的高效批处理方案 在高性能计算场景中,用户一次业务计算可以划分为大量的任务,每个任务的处理逻辑相同,但是输入文件.参数设置和输出文件不同.由于每个任务处理逻辑相似,执行时彼 ...