倍增 - 强制在线的LCA】的更多相关文章

LCA 描述 给一棵有根树,以及一些询问,每次询问树上的 2 个节点 A.B,求它们的最近公共祖先. !强制在线! 输入 第一行一个整数 N. 接下来 N 个数,第 i 个数 F i 表示 i 的父亲是 F i. 若 F i = 0,则 i 为树根. 接下来一个整数 M. 接下来 M 行,每行 2 个整数 A.B,询问节点(A xor LastAns).(Bxor LastAns)的最近公共祖先. 其中 LastAns 为上一个询问的答案,一开始 LastAns = 0. 输出 对每一个询问输出…
Description 见EOJ439 Solution 先考虑不强制在线怎么做. 按询问区间右端点排序,从左往右扫,维护所有后缀的答案. 如果扫到 \(a[i]\),那么让统计个数的 \(cnt[a[i]]++\). 如果\(cnt[a[i]]<a[i]\),那么在当前的右端点固定的情况下这个\(a[i]\)不会有任何的贡献. 如果\(cnt[a[i]]=a[i]\),那么可以让\([1,pre[i]]\)区间加\(1\),其中\(pre[i]\)代表从\(i\)向前第\(a[i]\)个\(a…
链接:http://hihocoder.com/problemset/problem/1236 思路; 有n个五维的向量,给出q个询问,每个询问是一个五维向量,问有多少个向量没有一维比这个向量大.并且答案需要加密,除了第一个答案,其他答案都要和上一个答案异或. 因为是强制在线所以不能用cdq分治写..我们可以用stl里面的bitset来写这道题,但是因为数据还是太大了,这里我们可以用分块处理下,降低空间复杂度,需要用的时候直 接二分查找需要的块,预处理后可以o(1)获取前k-1个块的信息,然后我…
P5105 不强制在线的动态快速排序 题目背景 曦月最近学会了快速排序,但是她很快地想到了,如果要动态地排序,那要怎么办呢? 题目描述 为了研究这个问题,曦月提出了一个十分简单的问题 曦月希望维护一个允许重复的集合\(S\),支持: 插入\([L, R]\),也就是插入\(L, L + 1 ... , R\),这\(R - L + 1\)个数 询问\(Sort(S)\) \(Sort(S)\)的定义为: 我们将集合\(S\)中的元素从小到大按照快速排序排好序,记为\(a_1, a_2 ... a…
不强制在线的动态快速排序 题解 算法一 按照题意模拟 维护一个数组,每次直接往数组后面依次添加\([l, r]\) 每次查询时,暴力地\(sort\)查询即可 复杂度\(O(10^9 * q)\),期望得分\(0\)分 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int n, opt; int q[....…
emm 可重集合没用用.直接变成不可重复集合 有若干个区间 每个区间形如[L,R] [L,R]计算的话,就是若干个连续奇数的和.拆位统计1的个数 平衡树维护 加入一个[L,R],把相交的区间合并.之后相邻不相交的部分O(1)计算贡献到答案里. O(nlogn+30n) 不强制在线的动态快速排序 写起来并不太好写 set就可以 删除一些区间,合并成大区间 要分类讨论 至于calc(l,r) 有O(1)公式,可以不用按位: 第一个第二个发现了,后面就是多余位置处理即可. 代码: 1.注意插入区间被包…
jzyzoj的p2016 先码着,强制在线的树分块或者树套树?关键是我树分块还在入门阶段树套树完全不会啊摔   http://blog.csdn.net/jiangyuze831/article/details/41445003 果然我除了抄代码什么也不会......树分块之类的东西完全不会计算复杂度..... 似乎upper_bound非常浪费时间..所以更改的时候直接循环查找不然会超时...... static这种东西不要胡乱用......如果在后面直接赋值会赋值不上........ 看代码…
COT - Count on a tree #tree You are given a tree with N nodes.The tree nodes are numbered from 1 to N.Each node has an integer weight. We will ask you to perform the following operation: u v k : ask for the kth minimum weight on the path from node u …
P5105 不强制在线的动态快速排序 $\bigoplus \limits_{i=2}^n (a_i^2-a_{i-1}^2) = \bigoplus \limits_{i=2}^n (a_i-a_{i-1})×(a_i+a_{i-1})$ 关于$l~r$区间,由于$a_i=a_{i-1}+1$ $ \bigoplus \limits_{i=l}^{r-1} (2i+1)=\bigoplus \limits_{i=1}^{r-1} (2i+1)\bigoplus \limits_{i=1}^{l…
1.输入树中的节点数N,输入树中的N-1条边.最后输入2个点,输出它们的最近公共祖先. 2.裸的最近公共祖先. 3. dfs+ST在线算法: /* LCA(POJ 1330) 在线算法 DFS+ST */ #include<iostream> #include<stdio.h> #include<string.h> using namespace std; ; *MAXN];//rmq数组,就是欧拉序列对应的深度序列 struct ST{ *MAXN]; *MAXN][…