首页 > TAG信息列表 > Rankings
acwing1782 Dynamic Rankings (整体二分)
和整体二分的模板相比,多了修改操作。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10,INF=1e9; 4 int n,m,t,c[N],ans[N],b[N]; 5 struct node{ 6 int op,x,y,z; 7 }q[N*3],rq[N*3],lq[N*3]; 8 9 void change(int x,int y){ 10 for(;Dynamic Rankings
\(\text{Problem}\) 动态区间第 \(k\) 小 Dynamic Rankings \(\text{Analysis}\) 整体二分 原本一个询问可二分,但多个询问效率太低 考虑离线,把修改和询问扔到一起 二分答案,运用树状数组之类的东西处理完修改操作 依次检查询问,划分左右,初步确定每个询问的答案值域,修改操作相应地划P2617 Dynamic Rankings
原题链接 考察:主席树+树状数组 实际是动态主席树的模板题,反正本蒟蒻不会(. 思路: 主席树实际是有n个根结点的线段树,如果我们修改第i棵主席树的值,后面i~n棵树都需要修改,时间复杂度最坏是\(O(n*m)\)级别的,但是主席树求区间第k小,实际就是求前缀和,而操作又涉及单点修改,这P2617 Dynamic Rankings 动态主席树 (支持插入后再更新)
思路: 只看询问操作的话,就是很普通的主席树,但是这道题目里还增加了一个修改操作,这在以前的主席树题目中是没有的,即是是所谓的区间修改,那也是先处理好修改操作在进行查询,而不会在查询中夹着修改。 所以这道题我们需要另一种方法来解决。 假如我们在luogu P2617 Dynamic Rankings(主席树)
嘟嘟嘟 一句话题意:带修改区间第\(k\)小。 不修改都会,主席树板子。但是有修改就要比较深入的理解主席树了。 众所周知,主席树中以\(i\)为根的线段树维护的是\([1, i]\)这个前缀的权值,因此若修改一个点\(a[x]\),必须把\([x, n]\)的线段树全修改了,单次修改复杂度为\(O(n \log{n})\),显Dynamic Rankings
本来想用这个题来写一下整体二分。 不过看了很久的树套树神奇数据结构貌似还从来没写过。 来练下手好了。 考虑我们没有修改操作时,区间\(kth\)可以用主席树来做,相当于维护了一个前缀和(这个前缀和的形式是由权值线段树来表达的)。 但是我们有修改操作了,如果我们继续维护这个暴力的前Dynamic Rankings(动态主席树 : 整体二分)
题目链接: Dynamic Rankings 大致题意 有眼就行 解题思路 动态主席树 和 整体二分 的模板题! 关于主席树的解法, 因为有单点修改, 所以我们要采用动态主席树. 具体方法就是, 把主席树中的存储方式采用树状数组的存储方式. 因此查询的时候, 原本是传入一个l - 1版本和一个当前题解 P2617 Dynamic Rankings
题目描述 Link 给定一个含有 \(n\) 个数的序列 \(a_1,a_2 \dots a_n\) ,需要进行 \(m\) 次操作,每次操作是下面的两种之一: Q l r k 表示查询下标在区间 \([l,r]\) 中的第 \(k\) 小的数 C x y 表示将 \(a_x\) 改为 \(y\) 。 \(1 \leq n ,m \leq 10^5 ,1 \leq a_i,y \leq 10^9\) 。P2617 Dynamic Rankings【树状数组套主席树】
题意: 给定一个含有 \(n\) 个数的序列 \(a_1,a_2 \dots a_n\),需要支持两种操作: Q l r k :表示查询下标在区间 \([l,r]\) 中的第 \(k\) 小的数; C x y :表示将 \(a_x\) 改成 \(y\); \(1\le n,m \le 10^5,1 \le l \le r \le n,1 \le k \le r-l+1,1\le x \le n,0 \le a_i,y \le 10^9\) 分题解 P2617 Dynamic Rankings
一道 树状数组套权值线段数的模板题。(然而我刚开始用线段树套平衡树做了) (orz hzwer) 题意 给定一个含有 n 个数的序列 \(a_1,a_2 \dots a_n\),需要支持两种操作: Q l r k 表示查询下标在区间$ [l,r]$中的第 k 小的数 C x y 表示将 \(a_x\) 改为 y 分析 一道 树状数组套权值线段数BZOJ 1901. Zju2112 Dynamic Rankings
整体二分和树套树都是 $O(n \log ^ 2 n)$ 的,但是整体二分的常数更小。 整体二分就是二分答案,然后就转化成区间数点问题,把区间里小于当前mid的数标成1,然后bit查询一下,再分成左右递归做下去。 #include <bits/stdc++.h> const int N = 5e4 + 7; const int INF = 1e9; struct N「luogu2617」Dynamic Rankings
「luogu2617」Dynamic Rankings 传送门 树套树直接上树状数组套主席树,常数很大就是了。 树套树参考代码: /*-------------------------------- Code name: DynamicRanking.cpp Author: The Ace Bee This code is made by The Ace Bee --------------------------------*/ #inP2617 Dynamic Rankings
题目链接:https://www.luogu.org/problem/P2617 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i]的值,改变后,程序还能针对改变后的a继续回答上面P2617 Dynamic Rankings(待修改区间第k大)
题目链接:https://www.luogu.org/problemnew/show/P2617 题目: 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]……a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i]的值,改变后,程序还能针对改变后的a[luogu2617][bzoj1901][Zju2112]Dynamic Rankings【树套树+树状数组+主席树】
题目网址 【传送门】 题目大意 请你设计一个数据结构,支持单点修改,区间查询排名k。 感想(以下省略脏话inf个字) 真的强力吹爆洛谷数据,一般的树套树还给我T了一般的点,加强的待修主席树还给我卡了几发空间。 我一共交了15发,正确率被这道题目拉低了。。。 …… 分析 好像有人用了分块水过BZOJ1901:Dynamic Rankings
浅谈离线分治算法:https://www.cnblogs.com/AKMer/p/10415556.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id=1901 把初始序列看作是在\(n\)次在\(i\)位置上插入\(a_i\)的操作。 把修改操作看作是先在\(pos\)位置删除一个\(a_{pos}\),再加上一个\(k\),然后把\(a_{pos}