原来主席树就是可持久化线段树啊,刚知道,,,

作为一道裸题,还是必A的,然而一开始偷懒不写离散化跪了N多遍,后来在缪大的帮助下发现了这个问题,遂A之

——又是这种破问题,实在不想说自己了

把n个数看成n次修改,对于每一次都建线段树,于是就能得到N棵线段树

然后时间空间全都爆炸,我们得到了完美的程序

但是每次因为只修一个叶子,所以只有一条根到叶的节点被修改,只要把这一部分备份一份就好了

最后返回新的根,用于保存

最后求的时候只要把两端点(左端点-1)的线段树上的点权值一减就搞定了

代码难看的要死,离散化是后来加的,看得出加的很生硬

#include <cstdio>
#include <algorithm>
#define INF 2000000000
#define max n
#define min 1
using namespace std;
struct node
{
    int val,ls,rs;
} t[];
;
struct num
{
    int val,ran,rea;
} a[];
bool operator<(num a,num b)
{
    return a.val<b.val;
}
bool com(num a,num b)
{
    return a.ran<b.ran;
}
],dui[];
int add(int now,int l,int r,int x)
{
    ;
    t[ne]=t[now];
    t[ne].val++;
    if(l<r)
    if(x<=mid)
        t[ne].ls=add(t[now].ls,l,mid,x);
    else
        t[ne].rs=add(t[now].rs,mid+,r,x);
    return ne;
}
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    ;i<=n;i++)
    {
        scanf("%d",&a[i].val);
        a[i].ran=i;
    }
    sort(a+,a+n+);
    ;i<=n;i++)
    {
        a[i].rea=i;
        dui[a[i].rea]=a[i].val;
    }
    sort(a+,a+n+,com);
    ;i<=n;i++)
        root[i]=add(root[i-],min,max,a[i].rea);
    ;i<=m;i++)
    {
        int x,y,z,l,r,mid;
        scanf("%d%d%d",&x,&y,&z);
        ],y=root[y],l=min,r=max,mid=(l+r)/;l<r;mid=(l+r)/)
        if(t[t[y].ls].val-t[t[x].ls].val<z)
        {
            z-=t[t[y].ls].val-t[t[x].ls].val;
            x=t[x].rs;y=t[y].rs;
            l=mid+;
        }
        else
        {
            x=t[x].ls;y=t[y].ls;
            r=mid;
        }
        printf("%d\n",dui[l]);
    }
    ;
}

poj2104 K-th Number区间第k小值 主席树的更多相关文章

  1. Dynamic Rankings || 动态/静态区间第k小(主席树)

    JYF大佬说,一星期要写很多篇博客才会有人看 但是我做题没有那么快啊QwQ Part1 写在前面 区间第K小问题一直是主席树经典题=w=今天的重点是动态区间第K小问题.静态问题要求查询一个区间内的第k ...

  2. POJ2104 K-th Number —— 区间第k小 整体二分

    题目链接:https://vjudge.net/problem/POJ-2104 K-th Number Time Limit: 20000MS   Memory Limit: 65536K Tota ...

  3. HDU 2665.Kth number 区间第K小

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. POJ 2014.K-th Number 区间第k小 (归并树)

    K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 57543   Accepted: 19893 Ca ...

  5. bzoj 3065: 带插入区间K小值 替罪羊树 &amp;&amp; AC300

    3065: 带插入区间K小值 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 1062  Solved: 253[Submit][Status] Des ...

  6. [luogu3834]静态区间第k小【主席树】

    传送门:https://www.luogu.org/problemnew/show/P3834 题目描述 如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值. 分析 很多人都说是用 ...

  7. 【题解】BZOJ 3065: 带插入区间K小值——替罪羊树套线段树

    题目传送门 题解 orz vfk的题解 3065: 带插入区间K小值 系列题解 一 二 三 四 惨 一开始用了一种空间常数很大的方法,每次重构的时候merge两颗线段树,然后无限RE(其实是MLE). ...

  8. 「BZOJ3065」带插入区间第K小值 替罪羊树&#215;线段树

    题目描述 从前有\(n\)只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力\(a_i\).跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间\(k\)小值.他 ...

  9. 【bzoj3065】带插入区间K小值 替罪羊树套权值线段树

    题目描述 从前有n只跳蚤排成一行做早操,每只跳蚤都有自己的一个弹跳力a[i].跳蚤国王看着这些跳蚤国欣欣向荣的情景,感到非常高兴.这时跳蚤国王决定理性愉悦一下,查询区间k小值.他每次向它的随从伏特提出 ...

随机推荐

  1. PHP之数据类型

    1.PHP字符串(String):一个字符串是一串字符的序列,就像"Hello world!":可以将任何文本放在单引号和双引号中: <?php $x="Hello ...

  2. js中document.documentElement 和document.body 以及其属性 clientWidth等

    在设计页面时可能经常会用到固定层的位置,这就需要获取一些html对象的坐标以更灵活的设置目标层的坐标,这里可能就会用到document .body.scrollTop等属性,但是此属性在xhtml标准 ...

  3. 如何获取多核、多cpu系统中指定cpu的序列号

    如何获取多核.多cpu系统中指定cpu的序列号作者:SkyJacker(转贴请保持完整并注明作者和出处)http://www.cnpack.orgCnPack IV  QQ Group: 130970 ...

  4. 结合daterangepicker实现Datatables表格带参数查询

    http://dt.thxopen.com/example/user_share/send_extra_param.html#@一颗树 http://www.guoxk.com/node/jquery ...

  5. KEILC51可重入函数及模拟栈浅析

    MARK:文章中的红色部分是个人的理解. KEILC51可重入函数及模拟栈浅析 关键字:keilc51,模拟堆栈,可重入函数调用,参数传递,C?XBP,C?ADDXBP 摘要:本文较详细的介绍了kei ...

  6. C#软件开发实例.个人定制自己的屏幕抓图工具(八)加入了截图功能键盘

    章文件夹 (一)功能概览 (二)创建项目.注冊热键.显示截图主窗体 (三)托盘图标及菜单的实现 (四)基本截图功能实现 (五)针对拖拽时闪烁卡顿现象的优化 (六)加入配置管理功能 (七)加入放大镜的功 ...

  7. regular expression tutorial

    \d represent any number \D represents everything but a number \s represents any space \S Anything bu ...

  8. Java 中关于基本数字类型的注意事项

    局部变量需初始化才能访问 public void test() { float n; n = n + 1; } 窄化导致自增异常 short i = 3; i += 1; // 不提升 short i ...

  9. Openresty 进行路由系统设计

    1.系统基础设计图为: 用户通过Http访问Openresty(Nginx + Lua), 其中Nginx虚拟主机中配置文件进行Lua脚本加载. LUA通过nginx内置变量或者http请求中变量来区 ...

  10. Codeforces Round #447 (Div. 2) 题解 【ABCDE】

    BC都被hack的人生,痛苦. 下面是题解的表演时间: A. QAQ "QAQ" is a word to denote an expression of crying. Imag ...