其实早在 2020-12-26 的比赛我们就做过 5409. Fantasy 这可是紫题啊 题目大意 给你一个序列,求长度在 \([L,R]\) 区间内的 \(k\) 个连续子序列的最大和 题解 如此多的子序列并不好处理 设 \(i\) 为一个区间的左端点,那么右端点的区间为 \([i+L-1,i+R-1]\) ,记前缀和为 \(sum_i\) 那么一个区间 \([i,j]\) 的和就是 \(sum_j-sum_{i-1}\) 已经知道左端点 \(sum_i\) ,只要找到最大的 \(sum_j…
[BZOJ 2006] [NOI 2010]超级钢琴(贪心+ST表+堆) 题面 给出一个长度为n的序列,选k段长度在L到R之间的区间,一个区间的值等于区间内所有元素之的和,使得k个区间的值之和最大.区间可以相交或包含,但一个区间只能被选1次. \(n,k,L,R \leq 5 \times 10^5\) 分析 先把区间和转化成前缀和.枚举左端点\(i\),右端点的范围为\([i+L-1,\min(i+R-1,n)]\).在这个区间里面找一个前缀和最大的位置p,答案就是\(sum[p]-sum[i…
Description 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙 的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中Ai可正可负. 一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R.我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和.两个超级和 弦被认为是相同的,当且仅当这两个超级和弦所包含的音符集合是相同的. 小Z决定创作一首由k个超级和弦组成的乐曲,为了使得乐曲更…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2006 题解: RMQ + 优先队列 (+ 前缀) 记得在一两个月前,一次考试考了这个题目的简化版:序列中只有正整数.当时我们曰 :有负数的话就怕是莫得解法哦.然后,有负数的情况居然是NOI题...难哭. 1).首先尝试固定区间的右端点R.那么可取的左端点的范围就已经确定.所以对于右端点为 R的权和最大的区间就能够求出来了:先求出前缀序列 pre[],由于 sum = pre[R]-pre[…
题面 WC时候写的题,补一下 做法比较巧妙:记录每个位置和它当前对应区间的左右端点,做前缀和之后重载一下小于号,用优先队列+ST表维护当前最大值.这样贡献就是区间最大值和端点左边差分一下,可以O(1)得到.每次从最大值所在位置分裂成两个小的对应区间扔回优先队列里即可. // luogu-judger-enable-o2 #include<cmath> #include<queue> #include<cstdio> #include<cstring> #in…
https://www.lydsy.com/JudgeOnline/problem.php?id=2006 https://www.luogu.org/problemnew/show/P2048#sub 小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出n个音符,编号为1至n.第i个音符的美妙度为Ai,其中Ai可正可负. 一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R.我们定义超级和…
2019/11/14 更新日志: 近期发现这篇题解有点烂,更新一下,删繁就简,详细重点.代码多加了注释.就酱紫啦! 正解步骤 我们需要先算美妙度的前缀和,并初始化RMQ. 循环 \(i\) 从 \(1\) 到 \(n\) ,因为以i为起点的 和弦 终点必定是 \(i + L - 1\) 到 \(i + R - 1\) 之间,所以只要在区间内用RMQ取 超级和弦 ,并加入以美妙度从小排到大的优先队列中. 取出堆顶元素,将美妙度加入 \(ans\) ,并将元素切为从 (当前元素的左边界 到 当前元素…
题目大意 给出一个序列和\(L, R\), 求前k大长度在\([L,R]\)之间的连续子序列的和的和. 解题思路 朴素的想法是对于一个左端点\(p\), 它的右区间取值范围是一个连续的区间即\([p+L-1,p+R-1]\). 枚举这些区间的和然后排序一下什么的, 当然可以用前缀和优化. 考虑对于一个左端点和一个右端点的区间组成的三元组, 设它的答案是\(f(p,l,r)\),那么\(f(p,l,r)\)是一个固定的数, 即\(f(p,l,r)=max(sum(p,r)), \text{其中}(…
题目链接 题目大意:求序列内长度在$[L,R]$范围内前$k$大子序列之和. ---------------------- 考略每个左端点$i$,合法的区间右端点在$[i+L,i+R]$内. 不妨暴力枚举所有左端点,找到以其为左端点满足条件的最大子序列. 用贪心的思想,这些序列一定是满足题意的.统计后将该序列删除. 但这样直接删除肯定会丢失一部分有用的序列.一些也在前$k$大范围内的序列可能跟删除部分有交集. 所以我们不妨设$maxi$指以$i$为左端点的子序列,以$maxi$为右端点时能取得最…
[题解][P2048 NOI2010]超级钢琴 一道非常套路的题目.是堆的套路题. 考虑前缀和,我们要是确定了左端点,就只需要在右端区间查询最大的那个加进来就好了.\(sum_j-sum_{i-1}​\)嘛,我们预处理对于\(sum​\)的\(st​\)表,然后枚举\(i​\),然后记五元组\(sum,i,l,pos,r​\)分别表示这个五元组的\(sum_{pos}-sum_{i-1}​\)贡献,左端点\(i​\),右边范围\(l,r​\),和上次使用的下标\(pos​\) . 先把所有的\(…