http://dzy493941464.sinaapp.com/archives/96那个SIZE貌似必须设成R*R/Q?不知为啥,自己算的不是这个的说。本机AC,线上TLE。#include#include#include#include#includeusing namespace std;in...
分类:
其他好文 时间:
2015-04-22 08:16:03
阅读次数:
459
劳资就是想单纯的测个模板,怎么就特喵的这么难。
首先说一下自己对主席树的理解。
作用:确定区间[L,R]内的第K大数,或者区间内有多少个不同个元素。
主席树的另一个名字叫做函数式线段树,然后我查了一下函数式的特点,其中之一就是不修改状态。
从主席树上来看这个特点就是:在向主席树插入第 i 个元素之后,我们仍能查询到没插入 i 之前的状态。
主席树的构造:
对于有n个元素,s个不同元...
分类:
其他好文 时间:
2015-04-21 14:37:13
阅读次数:
164
先打上代码以后更新解释 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define REP(i, s, n) for(int i = s; i = s; i --) 8 #define LOW for(; x; x -=...
分类:
编程语言 时间:
2015-04-15 00:37:55
阅读次数:
393
设siz[i]表示i的子树大小-1。询问中b在a上方的便于统计。对于b在a下方的情况,贡献为距a距离在K以内的节点的siz之和。按dfs序建立可持久化线段树,线段树的下标是深度。相当于把每个点(带权)映射到了平面上,然后求一个矩形内的点权之和。#include#includeusing namesp...
分类:
其他好文 时间:
2015-04-14 16:07:17
阅读次数:
134
越来越觉得主席树这个东西需要意会了……太TM深奥了TAT (??????)?? 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define REP(i, s, n) for(int i = s; i = s; i --)...
分类:
其他好文 时间:
2015-04-13 22:47:05
阅读次数:
148
每个点的主席树的root是从其父转移来的。询问的时候用U+V-LCA-FA(LCA)即可。#include#includeusing namespace std;#define N 100001int v[N>1); T[cur].lc=++e; BuildTree(T[cur].lc,l,m); ...
分类:
其他好文 时间:
2015-04-13 20:40:23
阅读次数:
139
先把序列建好,然后区间插入、单点询问等价于在左端点插入,在右端点删除,然后前缀询问。#include#include#includeusing namespace std;#define N 100001typedef long long ll;vectortong[N];typedef vecto...
分类:
其他好文 时间:
2015-04-13 16:14:33
阅读次数:
143
//==========================蒟蒻Macaulish:http://www.cnblogs.com/Macaulish/转载要声明!//==========================说好的“因为是OJ上的题,就简单点好了。”呢?一开始看不懂,不会写。然后跪了一个晚上决...
分类:
其他好文 时间:
2015-04-12 22:25:44
阅读次数:
148
以下转自http://prominences.weebly.com/1/post/2013/02/1.html可持久化线段树,也叫作函数式线段树,也就是主席树,(。。。因为先驱就是fotile主席。。Orz。。。)网上的教程很少啊,有的教程写得特别简单,4行中文,然后就是一篇代码~~这里,我将从查找...
分类:
其他好文 时间:
2015-04-12 14:41:29
阅读次数:
123
题目大意给出一个序列,问一段区间内有没有出现过一半以上的数字。思路用主席树取区间出来,在权值线段树上找。CODE#define _CRT_SECURE_NO_WARNINGS#include
#include
#include
#include
#define MAX 500010
#define MAXR 1000...
分类:
其他好文 时间:
2015-04-09 15:32:24
阅读次数:
161