zoukankan      html  css  js  c++  java
  • bzoj3110: [Zjoi2013]K大数查询

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3110

    题目大意:有N个位置,M个操作。操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c
    如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。

    做法:看到这题,第一想法,树状数组套可持久化线段树,但是这题是区间修改,暴力修改的话感觉上会GG,所以换一种思维,即树套树实现,这题应该是线段树套线段树,一般的线段树套线段树都是外层维护序列中的位置,内层维护权值,但是对于这题来说不好在树中类似BST来二分答案。换一种思维嘛,外层线段树维护权值,内层线段树维护位置,就很好做了,对于修改操作,外层线段树会经过logn个节点,再在内层线段树中使用lazy—tag,每次修改操作时间复杂度,log^2n,动态开点,空间复杂度也为mlog^2n,对于询问操作,在外层线段树上二分即可。

    树套树。

  • 相关阅读:
    在仅有的一次生命里活出自己最大的可能
    每个人都渴望赞美
    历练领导力的八字要诀
    爱情语录
    Ps
    别跟我要钱,我是教授
    改变人生的五个问题
    纪晓岚妙用口才
    智慧和智商
    经典
  • 原文地址:https://www.cnblogs.com/OYzx/p/5509678.html
Copyright © 2011-2022 走看看