4092 绒绒鸹
题面
内容
给一个长 的序列,有 次操作,每次操作会给你一个数 ,你需要在序列的 位置放一只绒绒鸹,之后查询 位置的绒绒鸹数。
每次操作结束后,绒绒鸹会变得很活泼,于是会开始蹦蹦跳跳,即对每个 到 之间的整数 , 位置的所有绒绒鸹都会跳到 位置。
输入
第一行一个整数 。
接下来 行,第 行表示 。
接下来一行一个整数
接下来 行每行一个整数 ,表示在 位置放置一只绒绒鸹。
本题强制在线,即对于输入的 次操作的数,第 次的数需要异或上第 次操作的答案。
输出
输出 行,第 行输出一个整数,表示第 次操作的答案。
样例1
输入
6
1
2
1
3
3
6
5
1
4
7
3
7
输出
1
1
1
1
2
提示
对于 的数据,满足 。
对于 的数据,满足 。
对于 的数据,满足 。
对于 的数据,满足 。
对于 的数据,满足 。
对于 的数据,满足 。
对于 的数据,满足 ,。
思路
树链剖分:
dfs序可以保证对任何一个点的子树都是序列中的一段区间。
重儿子:子树大小最大的儿子
重链上每取一个区间都是在dfs序上一段连续的区间
往上跳一次轻边至少会翻倍
那么路径最多就可以通过个区间连接起来
维护一下当前位置的i还要跳几步才会跳到重链头
用小根堆维护f的最小值,再开个全局标记。