#P6707. [COCI2010-2011#7] UPIT

[COCI2010-2011#7] UPIT

题目背景

Mirko 厌倦了为了各种任务去实现各种数据结构。所以,他决定写一个终极数据结构去操纵他最喜欢的数字序列。

快来帮助他吧!

Mirko 会给你他的数列,以及一系列你必须执行的操作。每个询问要么询问关于数列的信息,要么修改现有的数列。下面列出了所有可能的操作类型。

查询种类 描述 例子
1 A B X [A,B][A,B] 中所有元素值更改为 XX (9,8,7,6,5,4,3,2,1)(9, 8, 7, 6, 5, 4, 3, 2, 1)\to 11 33 55 00 \to(9,8,0,0,0,4,3,2,1)(9, 8, 0, 0, 0, 4, 3, 2, 1)
2 A B X [A,B][A,B] 中所有元素增加一数,第 A+kA+k 位增加 (k+1)×X(k+1) \times X (9,8,7,6,5,4,3,2,1)(9, 8, 7, 6, 5, 4, 3, 2, 1)\to 22 33 55 22 (9,8,9,10,11,4,3,2,1)\to (9, 8, 9, 10, 11, 4, 3, 2, 1)
3 C X 在原来的第 CC 位前插入一个数,数值为 XX (9,8,7,6,5,4,3,2,1)(9, 8, 7, 6, 5, 4, 3, 2, 1)\to33 44 100100 \to (9,8,7,100,6,5,4,3,2,1)(9, 8, 7, 100, 6, 5, 4, 3, 2, 1)
4 A B 查询 [A,B][A,B] 的数值和 (2,18,7,6,1,4,7,7,2)(2, 18, 7, 6, 1, 4, 7, 7, 2)\to 44 66 77 \toresult:11result: 11

题目描述

给定一个数列 ff ,有以下操作。

设数列当前长度为 nn

查询种类|描述| :-:|:-:|:-: 1 A B X| fi=X(AiB)f_i=X(A \le i \le B) 2 A B X| fi+=(iA+1)×X(AiB)f_i+=(i-A+1) \times X(A \le i \le B) 3 C X| fi+1=fi(Cin)f_{i+1}=f_i(C \le i \le n) fC=Xf_C=X 4 A B| 求i=ABfi\sum^B_{i=A}f_i

输入格式

第一行两个正整数 nn , QQ,分别表示数列初始长度和操作数量。

第二行 nn 个非负整数表示初始数列。

接下来 QQ 行每行各包含一个如上询问。

输出格式

对于每一个 44 号操作,输出一行答案。

5 5
1 2 3 4 5
1 5 5 0
4 4 5
4 5 5
2 1 5 1
4 1 5
4
0
25
1 7
100
3 1 17
3 2 27
3 4 37
4 1 1
4 2 2
4 3 3
4 4 4
17
27
100
37

提示

数据规模及约定

设当前数列长 tt

对于 100%100\% 的数据 1n1 \le n , Q1×105Q \le 1 \times 10^5 , fi1×105f_i \le 1 \times 10^5 , 1X1001 \le X \le 100 , 1ABt1 \le A \le B \le t , 1Ct+11 \le C \le t + 1

说明

本题满分 130130 分。

译自 COCI2010-2011 CONTEST #7 T6 UPIT。