E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOj2006
bzoj2006
: [NOI2010]超级钢琴(主席树+优先队列)
bzoj2006
:[NOI2010]超级钢琴
bzoj2006
:超级钢琴思路对所有前缀和建权值线段树,先将所有右端点对应的最大的左端点丢进优先队列里,每次将优先队列队首的区间取出来后,将rk[r]++,从这个右端点对应的主席树区间中找到排名第
Seast
·
2019-05-09 01:00
【
BZOJ2006
】[NOI2010] 超级钢琴(堆+RMQ)
点此看题面大致题意:要你求出区间和前kkk大的区间的区间和之和,其中每个区间的大小在LLL与RRR之间。堆+RMQRMQRMQ这道题目,我们可以先对1∼n1\simn1∼n中的每一个iii假设它为左端点,求出区间[i+L−1,min(i+R−1,n)][i+L-1,min(i+R-1,n)][i+L−1,min(i+R−1,n)]中的一个右端点sss,使得对于任意一个j∈[i+L−1,min(i+
chenxiaoran666
·
2018-08-03 20:04
BZOJ
堆
RMQ
【BZOJ】2006: [NOI2010]超级钢琴-优先队列
传送门:
bzoj2006
题解实际上是道水题,但还是debug了很久。先求前缀和。用ST表存一下区间里前缀和最大的。枚举左端点,逐个加入优先队列。
ccosi
·
2018-05-30 23:04
priority_queue
ST表
[
BZOJ2006
][NOI2010]超级钢琴(st表+heap)
题目描述传送门题解首先考虑如果k=1的时候如何来做。当k=1时,也就是只选出来一个最大值就可以了,我们可以枚举区间的起点,每一个起点对应的一个区间长度合法的区间,从这段区间里找出来一个前缀和最大的然后减去起点的就可以了。但是如果k>1的话,我们不能只找一个最大的。那么可以考虑维护一个大根堆,每次弹出堆中最大的元素来,弹k次。还是像k=1时那样,每次找出来一个最大值,然后压到堆里。每次从堆中弹出一个
Clove_unique
·
2016-11-08 08:07
题解
NOI
堆
st表
[
BZOJ2006
][NOI2010]超级钢琴(st表+heap)
题目描述传送门题解首先考虑如果k=1的时候如何来做。当k=1时,也就是只选出来一个最大值就可以了,我们可以枚举区间的起点,每一个起点对应的一个区间长度合法的区间,从这段区间里找出来一个前缀和最大的然后减去起点的就可以了。但是如果k>1的话,我们不能只找一个最大的。那么可以考虑维护一个大根堆,每次弹出堆中最大的元素来,弹k次。还是像k=1时那样,每次找出来一个最大值,然后压到堆里。每次从堆中弹出一个
Clove_unique
·
2016-11-08 08:07
题解
NOI
堆
st表
BZOJ2006
——[NOI2010]超级钢琴
1、题意:给一个序列,让你取出k个不同的区间,要求长度在[L,R]之间,问所有区间和的最大值2、分析:这道题拿过来就能知道是要拿出前k个最大的区间,我们思考最暴力的做法,就是把这个所有的区间枚举出来算,取出前k个最大的,这个思路的复杂度很高,达到O(n2logn)很明显,这会超时,我们尝试换个角度,我们维护一个大根堆我们枚举所有的区间的左端点,然后我在[L,R]这个区间中选一个区间最大的,和大根堆
qzh_1430586275
·
2016-07-04 12:00
线段树
2006
bzoj
NOI2010
超级钢琴
【
bzoj2006
】[NOI2010]超级钢琴 堆+st表
Description小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中Ai可正可负。一个“超级和弦”由若干个编号连续的音符组成,包含的音符个数不少于L且不多于R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的,当且仅当这两个超
LOI_DQS
·
2016-03-28 21:00
姿势题
【
bzoj2006
】【NOI2010】【超级钢琴】
2006:[NOI2010]超级钢琴TimeLimit:20SecMemoryLimit:552MBSubmit:1778Solved:871[Submit][Status][Discuss]Description小Z是一个小有名气的钢琴家,最近C博士送给了小Z一架超级钢琴,小Z希望能够用这架钢琴创作出世界上最美妙的音乐。这架超级钢琴可以弹奏出n个音符,编号为1至n。第i个音符的美妙度为Ai,其中
FZHvampire
·
2015-07-10 14:07
线段树
堆
BZOJ2006
【主席树】【优先队列】
对于用RMQ写这道题的菊苣们无限仰慕./*Iwillwaitforyou*/ #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedeflonglongLL; typedefunsigne
Lethelody
·
2015-03-31 23:00
BZOJ2006
[NOI2010]超级钢琴(划分树+堆)
【题解】(划分树做法)要求出长度为l~r的前k大连续和,可以转化为k次求第i大连续和,这与划分树的作用有关先把前缀和预处理出来。一段连续和为S(j)-S(i),固定i之后为S(i+len)-S(i-1)(i为起点,len为长度,len∈[l,r])这里面,若i一定,len就在固定区间内变动,连续和的k大值对应S(i+len)的k大值,问题就转化为"求给定区间的k大值",就可以用划分树了但是起点有多
cjk_cjk
·
2015-02-22 11:58
堆
其他数据结构
BZOJ2006
[NOI2010]超级钢琴(划分树+堆)
【题解】(划分树做法)要求出长度为l~r的前k大连续和,可以转化为k次求第i大连续和,这与划分树的作用有关 先把前缀和预处理出来。一段连续和为S(j)-S(i),固定i之后为S(i+len)-S(i-1)(i为起点,len为长度,len∈[l,r])这里面,若i一定,len就在固定区间内变动,连续和的k大值对应S(i+len)的k大值,问题就转化为"求给定区间的k大值",就可以用划分树了 但是起点
cjk_cjk
·
2015-02-22 11:00
堆
划分树
NOI
bzoj
【
BZOJ2006
】【NOI2010】超级钢琴 Heap+主席树
题解:先维护个前缀和sum。然后以i为结束的串就可以有几个j作为开始节点,值sum[i]-sum[j-1]。我们取最优的j,把sum-sum加到堆里面。这样就可以O(1)取出最优串值,取出后,对于这个i,就可以有一个第二优的j为开始的串,我们再把这个串值加入到堆中。而这个j的优劣因为只跟sum有关,所以不妨写一个主席树寻找静态区间第K大,取得这个j。这样我们只需要取j次,维护j次,就可以得到最终答
Vmurder
·
2014-12-12 17:00
heap
主席树
NOI2010
BZOj2006
BZOJ2006
[NOI2010]超级钢琴
题目大意:给定一个序列,求出k个这个序列的位置不完全相同的子序列,使得每一个子序列的长度均在[l,r]内,并且使得这些子序列的权值和最大。思路:每一个子序列的权值和可以转化为两个前缀和之差。我们考虑以每一个位置为结尾的子序列,它的权值和可以看作是以该位置为结尾的前缀和减去它前面的某个前缀和。那么想要这个子序列的权值和尽量大,那么就要前面的那个前缀和尽可能小。如果数目不够,就第2小。再不够,就第3小
wyfcyx_forever
·
2014-10-23 16:00
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他