#HK3728. 「SNOI2022」军队

「SNOI2022」军队

题目描述

R 国的历史非常悠久。

R 国有 nn 个城市,国内有 CC 个党派,分别记为 1,2,,C1,2,\dots,C。由于 R 国的版图非常长,这 nn 个城市的位置可以近似为坐标轴上的 nn 个点。在历史的最初,记载了第 ii 个城市归属党派 cic_i,城中有数量为 aia_i 的军队。

R 国的历史上,经常发生以下三种事件:

  1. 党派 yy 进行了一次游说,使城市 ll 到城市 rr 的所有归属党派 xx 的城市全部归属了 yy
  2. 党派 xx 进行了一次征兵,使城市 ll 到城市 rr 的所有归属党派 xx 的城市中的军队数量增加了 vv
  3. 城市 ll 到城市 rr 之间的所有城市爆发了战争。这场战争的规模可以描述为两地之间的所有城市中的军队数量之和。注意战争不一定发生在不同党派之间,归属同一个党派的一些城市内部也可能发生内战。由于 R 国的医护系统足够先进,战争不会造成军队数量的减少。

小 N 是一个喜欢历史的女孩子,最近她想整理一下 R 国的战争史,特别是每场战争的规模。但是由于 R 国的历史实在太长了,她用纸和笔进行运算实在力不从心。于是她找到了你,希望你写一个程序,统计出 R 国历史上所有战争的规模。

输入格式

输入的第一行是三个正整数 n,q,Cn,q,C,分别表示城市的个数,事件的个数,和 R 国国内党派的个数。

接下来一行有 nn 个正整数 a1,a2,,ana_1,a_2,\dots,a_n,表示每个城市内初始的军队数。

接下来一行有 nn 个正整数 c1,c2,,cnc_1,c_2,\dots,c_n,表示每个城市初始归属的党派。

接下来 qq 行,每行 3355 个正整数,表示一次事件:

第一个正整数 opop 表示事件的类型。op=1,2,3op=1,2,3 分别表示「题目描述」中所述的游说,征兵和战争事件。

对于每个游说事件,接下来有 44 个正整数 l,r,x,yl,r,x,y,意义见「题目描述」。

对于每个征兵事件,接下来有 44 个正整数 l,r,x,vl,r,x,v,意义见「题目描述」。

对于每个战争事件,接下来有 22 个正整数 l,rl,r,意义见「题目描述」。

输出格式

对于每个战争事件,输出一行一个整数,表示此次战争的规模。

5 7 3
1 2 4 8 16
1 2 3 2 3
2 2 4 2 32
3 1 4
1 1 5 3 1
2 2 5 1 64
3 2 4
2 1 3 3 128
3 3 5

79
142
188

最初,五个城市的军队数量分别为 1,2,4,8,161, 2, 4, 8, 16,归属的党派分别为 1,2,3,2,31, 2, 3, 2, 3

发生的事件依次为:

  • 党派 22 尝试在城市 2,3,42, 3, 4 征兵,归属党派 22 的城市 2,42, 4 各增加了 3232 军队。
  • 城市 1144 之间的所有城市爆发了战争,规模为 1+34+4+40=791 + 34 + 4 + 40 = 79
  • 党派 11 在城市 1,2,3,4,51, 2, 3, 4, 5 进行了一次游说,使得原本归属党派 33 的城市 3,53, 5 归属了党派 11
  • 党派 11 尝试在城市 2,3,4,52, 3, 4, 5 征兵,归属党派 11 的城市 3,53, 5 各增加了 6464 军队。
  • 城市 2244 之间的所有城市爆发了战争,规模为 34+68+40=14234 + 68 + 40 = 142
  • 党派 33 尝试在城市 1,2,31, 2, 3 征兵,但是党派 33 现在不拥有任何城市,因此并没有成功征兵。
  • 城市 3355 之间的所有城市爆发了战争,规模为 68+40+80=18868 + 40 + 80 = 188

因此你的程序应该依次输出 79,142,18879, 142, 188

样例 2

见附加文件中 [military2.in](file:military2.in) 和 [military2.ans](file:military2.ans)。

本组数据满足测试点 4 的限制。

样例 3

见附加文件中 [military3.in](file:military3.in) 和 [military3.ans](file:military3.ans)。

本组数据满足测试点 14 的限制。

样例 4

见附加文件中 [military4.in](file:military4.in) 和 [military4.ans](file:military4.ans)。

本组数据满足测试点 18 的限制。

数据范围与提示

对于全部数据,1n,q,C2.5×1051 \le n, q, C \le 2.5 \times 10^51ai,v1081 \le a_i, v \le 10^81ci,x,yC1 \le c_i, x, y \le C

具体的数据规模与约定见下表。

测试点编号 n,qn,q CC 特殊约定
11 20\le 20 20\le 20
22 50\le 50 50\le 50
33 300\le 300 300\le 300
44 5000\le 5000 5000\le 5000
55 105\le 10^5 10\le 10
66 1.5×105\le 1.5\times 10^5
77 2×105\le 2\times 10^5
88 2.5×105\le 2.5\times 10^5
99 1.5×105\le 1.5\times 10^5 1.5×105\le 1.5\times 10^5 对于所有操作,保证 l=1,r=nl = 1, r = n
1010 2.5×105\le 2.5\times 10^5 2.5×105\le 2.5\times 10^5
1111 1.5×105\le 1.5\times 10^5 1.5×105\le 1.5\times 10^5 对于所有操作 1,21, 2,保证 l=1,r=nl = 1, r = n
1212 2×105\le 2\times 10^5 2×105\le 2\times 10^5
1313 2.5×105\le 2.5\times 10^5 2.5×105\le 2.5\times 10^5
1414 1.5×105\le 1.5\times 10^5 1.5×105\le 1.5\times 10^5 保证不存在操作 11
1515 2.5×105\le 2.5\times 10^5 2.5×105\le 2.5\times 10^5
1616 105\le 10^5 105\le 10^5
1717 1.5×105\le 1.5\times 10^5 1.5×105\le 1.5\times 10^5
1818 2×105\le 2\times 10^5 2×105\le 2\times 10^5
1919 2.5×105\le 2.5\times 10^5 2.5×105\le 2.5\times 10^5
2020