#uoj228. 基础数据结构练习题

基础数据结构练习题

#228. 基础数据结构练习题

sylvia 是一个热爱学习的女孩子,今天她想要学习数据结构技巧。

在看了一些博客学了一些姿势后,她想要找一些数据结构题来练练手。于是她的好朋友九条可怜酱给她出了一道题。

给出一个长度为 nn 的数列 AA,接下来有 mm 次操作,操作有三种:

  1. 对于所有的 i[l,r]i \in [l,r],将 AiA_i 变成 Ai+xA_i+x
  2. 对于所有的 i[l,r]i \in [l,r],将 AiA_i 变成 Ai\lfloor\sqrt{A_i}\rfloor
  3. 对于所有的 i[l,r]i \in [l,r],询问 AiA_i 的和。

作为一个不怎么熟练的初学者,sylvia 想了好久都没做出来。而可怜酱又外出旅游去了,一时间联系不上。于是她决定向你寻求帮助:你能帮她解决这个问题吗。

输入格式

第一行两个数:n,mn, m

接下来一行 nn 个数 AiA_i

接下来 mm 行中,第 ii 行第一个数 tit_i 表示操作类型:

  • ti=1t_i = 1,则接下来三个整数 li,ri,xil_i, r_i, x_i,表示操作一。
  • ti=2t_i = 2,则接下来三个整数 li,ril_i, r_i,表示操作二。
  • ti=3t_i = 3,则接下来三个整数 li,ril_i, r_i,表示操作三。

输出格式

对于每个询问操作,输出一行表示答案。

样例一

输入:

5 5
1 2 3 4 5
1 3 5 2
2 1 4
3 2 4
2 3 5
3 1 5

输出:

5
6

样例二

见样例数据下载。

限制与约定

测试点编号 nn 的规模 mm 的规模 其他约定
1 n3000n \leq 3000 m3000m \leq 3000
2
3
4 n100000n \leq 100000 m100000m \leq 100000 数据随机生成
5
6 ti1t_i \neq 1
7
8
9
10

(注:上表空白处表示规模或约定与同组上一行保持一致,此为 UOJ 原题页面的表格呈现方式)

对于所有数据,保证有 1lirin1 \leq l_i \leq r_i \leq n1Ai,xi1051 \leq A_i, x_i \leq 10^5