
主席树
huanzhizun
这个作者很懒,什么都没留下…
展开
-
POJ 2104 K-th Number 经典主席树
可持久化线段树#include#include#include#includeusing namespace std;const int maxn=100005;struct pi{ int sum; int lson; int rson;}pp[maxn*18];int root[maxn],tot;void build(int cnt,int l,原创 2015-04-10 09:34:02 · 540 阅读 · 0 评论 -
hdu5788 Level Up (2016多校第五场1008) 主席树
很显然如果改变一个点,那么如果这个点的值小于等于某个父亲的中位数的值,那么这个父亲的值就要变成比中位数大的最小的值,那么每个点对应了两个值,我们求这两个值的时候只需要用dfs来作为序号扔到主席树里,然后查找就行。奇怪的是用第k小的log^2的方法居然比直接找log的方法还快。下面给出复杂度为log的代码#include#include#include#include#include原创 2016-08-03 21:23:18 · 628 阅读 · 0 评论 -
HDU 4251 The Famous ICPC Team Again 简单主席树
查找s,t中中位数。#include#include#include#includeusing namespace std;const int maxn=100005;struct pi{ int sum; int lson; int rson;}pp[maxn*18];int root[maxn],tot;void build(int cnt,int原创 2015-04-10 11:03:41 · 429 阅读 · 0 评论 -
SPOJ DQUERY 主席树+lazy+乱搞
题意要求a,b区间中不同数的个数。我们从头往后扫,对于前面已经出现过的我们不用管,因为我们现在要的是加入扫到p这个店就求以这个点为结尾的查询,至于之前已经出现过的加入出现在q,那么得在q~p-1每个数减一用lazy维护。#include#include#include#include#include#includeusing namespace std;const int m原创 2015-04-10 09:26:53 · 441 阅读 · 0 评论 -
HDU 2665 Kth number 主席树
简单主席树第k小经典应用。#include#include#include#include#include#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;const int maxn=110005;int a[maxn],b[maxn];int dep[30][maxn];in原创 2015-04-10 10:59:18 · 535 阅读 · 0 评论 -
HDU 2852 KiKi's K-Number 主席树或树状数组
主席树的简单应用但是貌似主席树被卡了,但用树状数组能过。#include#include#include#includeusing namespace std;const int maxn=100010;int x[maxn],bit[maxn];int low(int p){ return p&(-p);}void merg(int p,int n,int k){ w原创 2015-04-10 11:01:34 · 552 阅读 · 0 评论 -
HDU 3727 Jewel 简单主席树
注意题目中的231指的是2^31,然后就是第k小主席树的应用。#include#include#include#includeusing namespace std;const int maxn=210005;struct pi{ int lson,rson; int sum;}pp[maxn*21];int root[maxn],tot,cc,x[maxn];原创 2015-04-10 10:56:50 · 549 阅读 · 0 评论 -
HDU 4866 Shooting 扫描线+主席树
题意是求x点上面到坐标轴前k小的距离之和。因为x只有100000所以直接扫x至于线段我们可以用vector分别存线段起点和终点,对于扫到p的时候,把以p为起点的线段加入主席树,把p-1位终点的线段拿出主席树,然后就是简单询问。#include#include#include#include#includeusing namespace std;const int maxn=10原创 2015-04-10 10:52:09 · 435 阅读 · 0 评论 -
HDU 4605 Magic Ball Game 树上主席树
用两颗主席树分别存大小为p的球的个数,还有就是处于右儿子的大小为p的个数即可,然后就是简单主席树。#include#include#include#includeusing namespace std;const int maxn=100005;struct pi{ int lson; int rson; int sum;}pp[maxn*18*2];i原创 2015-04-10 10:50:00 · 439 阅读 · 0 评论 -
hdu5790 Prefix(2016多校第五场1009)trie+主席树
如果不强制在线可以莫队乱搞,但是现在我们就想怎么把trie可持久化,其实我们只要记录一个点的存在范围即可,即从小到大建立主席树,对于每个点我们在主席树里面记录最右边的位置,也就是对于r记录的是最大的l,那就好办了,只求求和即可。#include#include#include#include#include#includeusing namespace std;const int原创 2016-08-03 21:27:21 · 506 阅读 · 0 评论