luogu#P8969. 幻梦 | Dream with Dynamic

    ID: 12954 远端评测题 10000ms 1024MiB 尝试: 2 已通过: 2 难度: 6 上传者: 标签>线段树珂朵莉树,颜色段均摊,ODT洛谷原创O2优化洛谷月赛均摊分析线段树合并

幻梦 | Dream with Dynamic

题目背景

“那以后见到她,会不会笑出来啊?”

“哈,一时半会见不到她的。”

小时候说要一起去看尘寰间的人间烟火,有人欣然接受,长大了说遗忘过去,那人也没有反驳。

其实吧,她们彼此明白,小时候在意的不是什么人间烟火,而是一起。

黑夜里,没有早晨的绯红,也褪去了天边的白光,留下的是她心头的散不去的灰暗。没有星光璀璨,没有满天繁星,她不在乎。她在乎的是那个人心中闪烁的星辰大海。


察觉所谓规则秘密,不过取悦于创世神明,早已知晓光明同黑暗般腥风血雨

题目描述

有一个长度为 nn 的序列,开始时第 ii 位为 aia_i。你需要完成 qq 次操作:

  • A l r x,对于所有的 lirl\le i\le r,令 aiai+xa_i\gets a_i+x
  • P l r,对于所有的 lirl\le i\le r,令 aipopcount(ai)a_i\gets\operatorname{popcount}(a_i)
  • J p,查询 apa_p 的值。

注:popcount(x)\operatorname{popcount}(x)xx 的二进制表示中 11 的个数。

输入格式

第一行两个正整数 n,qn,q

第二行 nn 个正整数 a1,a2,,ana_1, a_2, \ldots, a_n

接下来 qq 行,每行描述一个操作,形如以下三种中的一种:

  • A l r x
  • P l r
  • J p

输出格式

对于每个 J 操作,输出一行,一个整数,表示答案。

5 5
1 2 3 4 5
J 2
A 2 4 3
J 4
P 1 4
J 3

2
7
2

提示

【样例解释】

  • 开始时,a=[1,2,3,4,5]a = [1, 2, 3, 4, 5]
  • 对询问 J 2,应回答 a2=2a_2 = 2
  • 操作 A 2 4 3 后,a=[1,5,6,7,5]a = [1, 5, 6, 7, 5]
  • 对询问 J 4,应回答 a4=7a_4 = 7
  • 操作 P 1 4 后,a=[1,2,2,3,5]a = [1, 2, 2, 3, 5]
  • 对询问 J 3,应回答 a3=2a_3 = 2

【数据范围】

本题采用捆绑测试。

子任务编号 特殊限制 分值
1 n,q2000n,q\le 2000 3
2 没有 P 操作 7
3 没有 A 操作 15
4 数据随机生成
5 无特殊限制 60

对于全部数据,保证 1n3×1051\leq n\leq 3\times 10^51q1061 \le q \le 10^61lrn1 \le l \le r \le n1pn1 \le p \le n1ai,x1091\le a_i, x\le 10^9

子任务 4 的随机方式:

  • n=3×105n=3\times 10^5q=106q=10^6
  • aia_i[1,109][1,10^9] 均匀随机选取;
  • 对于每一个操作:
    • 从 3 种操作中均匀随机选取一个;
    • 如果是 A 操作,均匀随机从 [1,n][1,n] 中选取 2 个整数,将较小的作为区间左端点,较大的作为区间右端点,再从 [1,109][1,10^9] 中选取一个整数作为参数 x
    • 如果是 P 操作,均匀随机从 [1,n][1,n] 中选取 2 个整数,将较小的作为区间左端点,较大的作为区间右端点;
    • 如果是 J 操作,均匀随机从 [1,n][1,n] 中选取一个整数作为参数 p

【提示】

本题最大 I/O 量达到 30 MiB,请注意 I/O 效率。