
主席树
Lynstery
一只蒟蒻
展开
-
[主席树+二分] BZOJ2653: middle
题意**给定一个数字序列。 多次询问,每次求出左端点为a~b,右端点为c~d的所有子序列的中位数的最大值。 一个序列的中位数: 一个长度为n的序列a,设其排过序之后为b,其中位数定义为b[n/2],其中a,b从0开始标号,除法取下整。**题解**很强的主席树应用。 可以想到二分答案,如何验证呢? 肯定算一下比当前答案mid大的数的个数和小的数的个数差。我们设大于等于mid的数为1,小于mi原创 2017-02-23 12:59:21 · 765 阅读 · 0 评论 -
主席树——模板整理
函数式线段树。 利用了可持久化的思想,降低时间和空间复杂度。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=2000005;int n,Q,a[maxn],b[maxn];struct node{ int L,R,sum; node* ch[2]原创 2017-02-23 13:32:11 · 507 阅读 · 0 评论 -
[dfs序+主席树] BZOJ2809: [Apio2012]dispatching
题意在一个忍者的帮派里,一些忍者们将被选中派遣给顾客。 在这个帮派里,有一名忍者被称之为 Master。除了 Master以外,每名忍者都有且仅有一个上级。 所有与他们工作相关的指令总是由上级发送给他的直接下属,而不允许通过其他的方式发送。 现在你要招募一批忍者,并把它们派遣给顾客。你需要为每个被派遣的忍者支付一定的薪水,薪水总额不超过你的预算。 另外,为了发送派遣指令,你需要选择一名忍者作原创 2017-04-19 09:01:51 · 600 阅读 · 0 评论 -
[主席树] BZOJ2588: Spoj 10628. Count on a tree
题意询问树上路径第k小点权。题解算是主席树模板题。 按点权的值域建线段树,遍历一趟树,对每个节点记下它到根节点的信息。 显然,从x到y的信息=从x到根的信息+从y到根的信息-从lca(x,y)lca(x,y)到根的信息-从fa(lca(x,y))fa(lca(x,y))到根的信息。 直接在对应的树上找第k小即可。记得要离散。#include<cstdio>#include<algorithm原创 2017-04-16 19:14:41 · 501 阅读 · 0 评论 -
[离线+树状数组 || 主席树]BZOJ1878: [SDOI2009]HH的项链
题意给出一个n个数的数列。m次询问,每次求[L,R]区间中包含了多少种不同的数字。 (N ≤ 50000,M ≤ 200000)题解水题,解法很多。 我这里主要讲两种解法,实际上主要思想都差不多。 对于一个区间中的若干个相同数字,我们只关注最先出现的那个即可, 然后就可以乱搞了。离线+树状数组:我们建一个jump表,jump[i]表示在i之后第一个值与i相同的位置。 离线一下,从小到大枚举原创 2017-04-25 07:51:45 · 775 阅读 · 0 评论 -
[主席树] Codechef: Prefix XOR
题意给你 nn 个数,每个数的值是 aiai ,定义数对 (i,j)(i,j) 是上升的当且仅当: ai≤ai xor ai+1≤ai xor ai+1 xor ai+2≤⋯≤ai xor ai+1 xor ai+2⋯xor aja_i\le a_i ~\text{xor}~a_{i+1}\le a_i ~\text{xor}~a_{i+1} ~\text{xor}~a_{i+2}\le \cd原创 2017-08-02 00:31:35 · 457 阅读 · 0 评论 -
[主席树+哈希] Codechef June Challenge 2017 #CLONEME
主席树+哈希套路。通过哈希做到快速比较一些东西是否相等,很可能和字典序什么的有关。这题就是利用哈希,在主席树上二分一样地走,找到从左边开始第一个不一样的和从右边开始第一个不一样的,然后xjb判断一下就好了。#include<cstdio>#include<algorithm>#define Lh ch[0]->hsh#define Rh ch[1]->hsh#define Ls ch[0]-原创 2017-09-19 17:50:27 · 413 阅读 · 0 评论 -
[主席树] BZOJ1112: [POI2008]砖块Klo
水题。直接主席树求区间中位数,然后中位数左边右边求sum和cnt。算一下就好了。#include<cstdio>#include<algorithm>#define mp(x,y) make_pair(x,y)#define Fir first#define Sec secondusing namespace std;typedef long long LL;const int max原创 2017-09-29 09:59:01 · 389 阅读 · 0 评论