您当前的位置: 首页 > 

HeartFireY

暂无认证

  • 0浏览

    0关注

    334博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

洛谷P3380 模板 二逼平衡树 主席树套树状数组

HeartFireY 发布时间:2021-09-05 12:34:08 ,浏览量:0

洛谷P3380 模板 二逼平衡树 😊 | Powered By HeartFireY

Problem Description

几乎就是树套树的模板,与Dynamic Rankings这道题很相似,但操作比它要复杂的多。

首先查询排名 k t h kth kth的元素没什么变化,直接套用Dynamic Rankings那题的查询思路即可。对于查询元素排名也采用类似的思路。查询前驱后继是上面两个操作的组合。

但是。。。自己写了的WA掉了。具体怎么改还在想。仿照网上大佬写的一发过了。

有问题的代码,先记录一下,占个坑以后补

#include 
using namespace std;

const int N = 5e4 + 10, maxn = 1000000000;
int a[N], n, m;
int root[N], lc[N > k;
            cnt1 = cnt2 = 0;
            for(int i = l - 1; i; i -= lowbit(i)) L[++cnt1] = root[i];
            for(int i = r; i; i -= lowbit(i)) R[++cnt2] = root[i];
            cout  v;
            for(int i = 1; i  l >> r >> k;
            cnt1 = cnt2 = 0;
            for(int i = l - 1; i; i -= lowbit(i)) L[++cnt1] = root[i];
            for(int i = r; i; i -= lowbit(i)) R[++cnt2] = root[i];
            int kth = querynum(l, r, k);
            cnt1 = cnt2 = 0;
            for(int i = l - 1; i; i -= lowbit(i)) L[++cnt1] = root[i];
            for(int i = r; i; i -= lowbit(i)) R[++cnt2] = root[i];
            if(!kth) puts("-2147483647");
            else cout  r >> k;
            cnt1 = cnt2 = 0;
            for(int i = l - 1; i; i -= lowbit(i)) L[++cnt1] = root[i];
            for(int i = r; i; i -= lowbit(i)) R[++cnt2] = root[i];
            int kth = querynum(l, r, k);
            cnt1 = cnt2 = 0;
            for(int i = l - 1; i; i -= lowbit(i)) L[++cnt1] = root[i];
            for(int i = r; i; i -= lowbit(i)) R[++cnt2] = root[i];
            if(kth > maxn) puts("2147483647");
            else cout             
关注
打赏
1662600635
查看更多评论
0.0424s