loj#P3043. 「ZJOI2019」线段树
「ZJOI2019」线段树
题目描述
九条可怜是一个喜欢数据结构的女孩子,在常见的数据结构中,可怜最喜欢的就是线段树。
线段树的核心是懒标记,下面是一个带懒标记的线段树的伪代码,其中 tag
数组为懒标记:
其中函数 表示 的左儿子, 表示 的右儿子。
现在可怜手上有一棵 上的线段树,编号为 。这棵线段树上的所有节点的 tag
均为 。接下来可怜进行了 次操作,操作有两种:
- ,假设可怜当前手上有 棵线段树,可怜会把每棵线段树复制两份(
tag
数组也一起复制),原先编号为 的线段树复制得到的两棵编号为 与 ,在复制结束后,可怜手上一共有 棵线段树。接着,可怜会对所有编号为奇数的线段树进行一次 。 - ,可怜定义一棵线段树的权值为它上面有多少个节点
tag
为 。可怜想要知道她手上所有线段树的权值和是多少。
输入格式
第一行输入两个整数 表示初始区间长度和操作个数。
接下来 行每行描述一个操作,输入保证 。
输出格式
对于每次询问,输出一行一个整数表示答案,答案可能很大,对 取模后输出即可。
5 5
2
1 1 3
2
1 3 5
2
0
1
6
数据范围与提示
测试点 | 其他约定 | ||
---|---|---|---|
无 | |||
询问只有一个 | |||
无 | |||
对于 的数据,。