loj#P3059. 「HNOI2019」序列

「HNOI2019」序列

题目描述

给定一个长度为 nn 的序列 A1,,AnA_1, \ldots , A_n,以及 mm 个操作,每个操作将一个 AiA_i 修改为 kk。第一次修改之前及每次修改之后,都要求你找到一个同样长度为 nn 的单调不降序列 B1,,BnB_1, \ldots , B_n,使得 i=1n(AiBi)2\sum_{i=1}^n (A_i −B_i)^2 最小,并输出该最小值。需要注意的是每次操作的影响都是独立的,也即每次操作只会对当前询问造成影响。为了避免精度问题,我们保证这个最小值是个分数,也即能表示为两个非负整数相除的形式:x/yx/y。那么你将要输出 (x×yP2)modP(x\times y^{P-2})\bmod P 的值,表示模意义下 x/yx/y 的值。其中 P=998244353P=998244353 是一个大质数。

输入格式

第一行两个非负整数 n,mn,m,代表序列长度和操作数。

第二行有 nn 个由空格隔开的正整数,代表序列 A1,,AnA_1, \ldots , A_n

接下来 mm 行每行两个正整数 i,ki, k,代表将 AiA_i 修改为 kk

输出格式

输出 m+1m + 1 行每行一个整数,第 ii 行输出第 i1i − 1 次修改后的答案。特别的,第 11 行应为初始局面的答案。

5 3
9 2 4 6 4
1 1
1 4
5 6
28
2
4
26

数据范围与提示

对于前 10%10\% 的数据,保证 n,m10n, m \le 10k,Ai1000k, A_i ≤ 1000,且存在一种最优方案,使得 BiB_i 皆为整数。

对于前 30%30\% 的数据,保证 n,m100n, m \le 100

对于另外 20%20\% 的数据,保证 m=0m = 0

对于另外 20%20\% 的数据,保证 n,m3×104n, m \le 3 \times 10^4

对于所有数据,保证 $3 \le n \le 10^5, 0 \le m \le 10^5, 1 \le k, A_i \le 10^9$。