首页 > 其他分享 >[RMQ记录] P2048 [NOI2010] 超级钢琴

[RMQ记录] P2048 [NOI2010] 超级钢琴

时间:2023-01-07 10:56:06浏览次数:66  
标签:RMQ 答案 pos start 枚举 NOI2010 端点 P2048

题目

如果枚举所有的情况肯定是不行的。不过可以发现一些对答案完全没有影响的答案也被枚举,十分浪费时间,所以下面介绍一种很好的思路。

首先,考虑优化暴力(暴力指用堆维护每一个区间的和,然后取堆中前 $m$ 数大记入答案)。为了减少不必要的枚举所以维护一个四元组$(start,l,r,pos)$,$start$ 表示区间左端点,$[l,r]$ 表示区间右端点的范围,$pos$ 表示右端点在$pos$时该区间之和取最大值。如果有多个右端点都能取到最大值,$pos$等于随便一个右端点即可,不会影响到答案。在统计答案的时候每取出一个四元组,就要往堆中加入 $(start,l,pos-1,?)$ 和 $(start,pos+1,r,?)$,注意考虑 $l=pos$ 和 $pos=r$ 的情况。这样的话只需最初枚举每一个 $start$,向堆中加入 $(start,start+l-1,start+r-1,?)$ 即可,枚举次数大幅度减少。

然后考虑如何在确定左端点的情况下找到右端点在  $[l,r]$ 范围内取到最大值时的位置。这很显然是一个RMQ问题,使用ST表维护即可。

Code

 

标签:RMQ,答案,pos,start,枚举,NOI2010,端点,P2048
From: https://www.cnblogs.com/nebula-xy/p/17032214.html

相关文章

  • python之路52 ORMQ查询、ORM事务、查询优化、常用字段及参数、ajax方法
    Q查询进阶操作fromdjango.db.modelsimportQq_obj=Q()#1.产生q对象q_obj.connector='or'#默认多个条件的连接是and可以修改为orq_obj.children.append(('......
  • [Ynoi2010]iepsmCmq
    链接:https://www.luogu.com.cn/problem/P6105题目描述:维护一个集合,动态加删元素,每一次维护集合中$(i+j)modC$($i,j$是集合中两个不同的元素)的最大值。题解:我们可以将......
  • hdu3078 Network--RMQ & LCA
    原题链接:​​http://acm.hdu.edu.cn/showproblem.php?pid=3078​​题意:给定n个点标号1到n,每个点一个权值,接下来n-1行u,v表示u和v两点连线,接下来k行查询,op,u,v,如果u为0,表示把点u......
  • LCA 和 RMQ 互化
    简单记录一下。RMQ转LCA:建立笛卡尔树即可。为啥:考虑树上的点\(lca(u,v)\),其必为\([u,v]\)中的点。对于所有以其为根的子树中的点,一定比其权值小/大,不在子树中的点,不......
  • docker部署RockerMQ单机测试环境
    1.RocketMQ创建专属网络[root@mq011~]#dockernetworkcreaterocketmq154dc65dce84ce5d417e9e2787bdd77de881ac65575e5e74fed4aeaf99830984[root@mq011~]#docker......
  • [拆位线段树]RMQ
    [拆位线段树]RMQ题目​​https://ac.nowcoder.com/acm/problem/21414​​思路区间或,区间求和对于区间或,异或这种位运算,没法之间打懒标记。但是如果我们按位拆分,可以发现对......
  • CF803G Periodic RMQ Problem
    这题很妙,当时用CD的方法,写平衡树,但是吧没有领会精神,写了200多行,发现前驱后继又不合法的情况,好像要写12种情况,就不想写了。然后就突然明白线段树做法了。。。介绍一种线段......
  • ST表&倍增&RMQ问题
    ST表,SparseTable,是解决区间最值问题,及RMQ问题的工具,利用倍增思想,O(N*log2(N))预处理,O(1)查询。设f[i][j]表示从i开始的2^j个数的最值,初始化f[i][0]=a[i],对于处理f数组,......
  • [Ynoi2010] y-fast trie
    [Ynoi2010]y-fasttrie思路考虑在插入所有元素的时候对\(C\)取模。那么可以分类讨论了:\(0\leqx+y<C\)\(x+y\geqC\)考虑第二种情况等价于取集合中前两大的数,可......
  • P3205 [HNOI2010]合唱队
    P3205[HNOI2010]合唱队题目大意:一个排队方式,共\(n\)个人($n\leq1000$),如果当前人的身高大于前一个,那么将这个人排在前一个人右边,如果当前人身高小于前一个人,那么......