#P16177. [ICPC 2014 NAIPC] Fantastic Problem

[ICPC 2014 NAIPC] Fantastic Problem

题目描述

世界著名的问题编写者 Andrew 终于决定退休了。然而,他首先希望推出最后一部杰作,以巩固他的传奇地位,并让全世界的参赛者惊叹不已。作为他最喜爱的学生,他请你在他将题目提交给 ICFP(国际精彩问题委员会)之前,帮他校对一下。

这道题被证明是一个相当复杂的数论问题,但你最终还是得出了一个解法……结果却发现它无法通过他的数据。在浪费了数小时调试你的代码之后,你意识到你的代码是正确的——而是数据无效!Andrew 的高龄似乎真的让他力不从心了。

在他的问题中,你得到了一个包含 nn 个整数的序列 V1nV_{1\dots n},并且有一个重要的保证:在每一个长度为 kk 的连续整数区间(即某个起始下标 ii 对应的 ViVi+k1V_i\dots V_{i+k-1})内,任意两个整数都是互质的(两个整数互质意味着它们除了 1 之外没有其他公因数)。然而,Andrew 的数据中并未满足这一条件,导致你的程序崩溃了!

为了帮助你敬爱的导师,你统计出有多少个长度为 kk 的区间不满足他问题描述中的承诺。不幸的是,你的工作还没有结束。由于难以修复他的数据,Andrew 进行了 mm 次顺序更新,每次更新涉及选择数列中的某个位置 aa,并将其值改为某个值 bb。在每次更改之后,他都想知道他的新序列中包含多少个不合法的长度为 kk 的区间。似乎这还不够,在第 mm 次更新之后,Andrew 认为数据已经足够好了,并希望你用最终的整数序列来解决他的问题!他的问题陈述如下:

给定一个整数序列,计算它们的和。

输入格式

输入中有多个测试用例。每个测试用例的第一行包含三个整数 nn1n100,0001 \leq n \leq 100{,}000)、kk1kn1 \leq k \leq n)和 mm1m100,0001 \leq m \leq 100{,}000),其中 nn 是 Andrew 列表的大小,kk 是相关连续区间的大小,mm 是 Andrew 进行的更改次数。接下来的 nn 行,每行包含一个整数 vv1v100,0001 \leq v \leq 100{,}000),表示 Andrew 输入中的一个值。这些 vv 按它们在 Andrew 列表中出现的顺序给出。接下来的 mm 行,每行包含两个整数 aa1an1 \leq a \leq n)和 bb1b100,0001 \leq b \leq 100{,}000),表示 Andrew 将值 VaV_a 更改为 bb。输入以一行三个 0 结束。测试数据大小约 17 MB。

输出格式

对于每个测试用例,输出 m+2m+2 个整数。第一个整数应为 Andrew 原始列表中不满足两两互质约束的长度为 kk 的区间数量。接下来的 mm 个整数应依次为在 Andrew 进行 mm 次更改后,每次更改后不满足约束的区间数量。最后一个整数应为最终列表中所有数字的和。每个整数输出在自己的行上,不要包含空格。输出之间不要打印空行。

6 3 4
7
2
3
4
5
6
4 3
5 9
4 10
6 11
0 0 0
2
3
3
3
2
42

提示

翻译由 DeepSeek V3.2 完成