主席树
D_Bamboo_
我不懒,只是不知道填什么
展开
-
hdu5919 Sequence Il 主席树
题目链接题意给出一个序列,问区间[l, r]中所有不同元素出现的第一个位置(取最左)组成的序列中的第k/2个,k是区间不同数的个数。第i个询问区间依赖于第i-1个询问的答案,所以是强制在线的。思路区间第k个,显然是主席树,和查询区间不同数的个数一样,都是相同的数只取一个,但这个是取相同数的最前面一个,所以在建树的时候倒过来建就可以满足要求,然后要查询位置第k/2的数的位置,所以先求出这个...原创 2019-12-11 18:43:55 · 196 阅读 · 0 评论 -
区间内不同数的个数
题目链接:https://vjudge.net/problem/SPOJ-DQUERY询问区间内不同数的个数做法一:树状数组做法:离线处理,将以r从小到大排序,一个标记数组记录数出现的位置,树状数组里只记录当前所有相同的数的最右位置,这样一个数就只会被加一次。#include <bits/stdc++.h>using namespace std;const int maxn...原创 2019-12-11 16:51:22 · 541 阅读 · 0 评论 -
P2633 Count on a tree 树上主席树
树上主席树在树上根据dfs序建立主席树。题目给定一棵 n 个节点的树,每个点有一个权值。有 m 个询问,每次给你 u,v,k,你需要回答 u xor last 和 v 这两个节点间第 k 小的点权。其中 last是上一个询问的答案,定义其初始为 0,即第一个询问的 u 是明文。维护主席树,每个节点代表这个下标的数出现的次数。用u点的主席树+v点的主席树-lca(u,v)的主席树-lca...原创 2019-12-10 11:21:07 · 168 阅读 · 0 评论