#L3728. 「SNOI2022」军队
「SNOI2022」军队
#3728. 「SNOI2022」军队
题目描述
R 国的历史非常悠久。
R 国有 个城市,国内有 个党派,分别记为 。由于 R 国的版图非常长,这 个城市的位置可以近似为坐标轴上的 个点。在历史的最初,记载了第 个城市归属党派 ,城中有数量为 的军队。
R 国的历史上,经常发生以下三种事件:
- 党派 进行了一次游说,使城市 到城市 的所有归属党派 的城市全部归属了 。
- 党派 进行了一次征兵,使城市 到城市 的所有归属党派 的城市中的军队数量增加了 。
- 城市 到城市 之间的所有城市爆发了战争。这场战争的规模可以描述为两地之间的所有城市中的军队数量之和。注意战争不一定发生在不同党派之间,归属同一个党派的一些城市内部也可能发生内战。由于 R 国的医护系统足够先进,战争不会造成军队数量的减少。
小 N 是一个喜欢历史的女孩子,最近她想整理一下 R 国的战争史,特别是每场战争的规模。但是由于 R 国的历史实在太长了,她用纸和笔进行运算实在力不从心。于是她找到了你,希望你写一个程序,统计出 R 国历史上所有战争的规模。
输入格式
输入的第一行是三个正整数 ,分别表示城市的个数,事件的个数,和 R 国国内党派的个数。
接下来一行有 个正整数 ,表示每个城市内初始的军队数。
接下来一行有 个正整数 ,表示每个城市初始归属的党派。
接下来 行,每行 3 到 5 个正整数,表示一次事件:
-
第一个正整数 表示事件的类型。 分别表示「题目描述」中所述的游说,征兵和战争事件。
-
对于每个游说事件,接下来有 个正整数 ,意义见「题目描述」。
-
对于每个征兵事件,接下来有 个正整数 ,意义见「题目描述」。
-
对于每个战争事件,接下来有 个正整数 ,意义见「题目描述」。
输出格式
对于每个战争事件,输出一行一个整数,表示此次战争的规模。
样例 1
输入
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
最初,五个城市的军队数量分别为 ,归属的党派分别为 。
发生的事件依次为:
- 党派 尝试在城市 征兵,归属党派 的城市 各增加了 军队。
- 城市 和 之间的所有城市爆发了战争,规模为 。
- 党派 在城市 进行了一次游说,使得原本归属党派 的城市 归属了党派 。
- 党派 尝试在城市 征兵,归属党派 的城市 各增加了 军队。
- 城市 和 之间的所有城市爆发了战争,规模为 。
- 党派 尝试在城市 征兵,但是党派 现在不拥有任何城市,因此并没有成功征兵。
- 城市 和 之间的所有城市爆发了战争,规模为 。
因此你的程序应该依次输出 。
样例 2
见附加文件中 military2.in 和 military2.ans。
本组数据满足测试点 的限制。
样例 3
见附加文件中 military3.in 和 military3.ans。
本组数据满足测试点 的限制。
样例 4
见附加文件中 military4.in 和 military4.ans。
本组数据满足测试点 的限制。
数据范围与提示
对于全部数据,,,。
具体的数据规模与约定见下表。
| 测试点编号 | 特殊约定 | ||
|---|---|---|---|
| 1 | 无 | ||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | |||
| 9 | 对于所有操作,保证 , | ||
| 10 | |||
| 11 | 对于所有操作 1, 2,保证 , | ||
| 12 | |||
| 13 | |||
| 14 | 保证不存在操作 1 | ||
| 15 | |||
| 16 | 无 | ||
| 17 | |||
| 18 | |||
| 19 | |||
| 20 | |||