P15080 [ICPC 2024 Chengdu R] Good Partitions

题目描述

Lawliet 拥有一个长度为 $n$ 的数字序列 $a_1, a_2, \ldots, a_n$,他希望知道「好数字」的个数。 定义一个整数 $k$ 是「好数字」,如果它满足以下条件: - $1 \leq k \leq n$; - 将序列 $a$ 依据 $k$ 按照以下划分方法分成若干份后,每一份序列都是单调不降的。 划分方法为: - 将序列 $a$ 分成 $\lceil \frac{n}{k} \rceil$ 份; - 对于第 $i$ 份($1 \leq i \leq \lceil \frac{n}{k} \rceil - 1$),包含的元素是 $a_{(i - 1) \times k + 1}, a_{(i - 1) \times k + 2}, \ldots, a_{i \times k}$; - 对于第 $\lceil \frac{n}{k} \rceil$ 份,包含的元素是 $a_{(\lceil \frac{n}{k} \rceil - 1) \times k + 1}, \ldots, a_n$。 Lawliet 认为这个问题太过简单了,于是他会进行 $q$ 次修改,每次修改会给出两个正整数 $p$ 和 $v$,然后将 $a_p$ 的数值修改为 $v$。 Lawliet 需要你帮助计算,对于未进行任何修改前以及序列 $a$ 每次修改后,满足上述条件的「好数字」的个数。

输入格式

第一行包含一个整数 $t$($1\le t\le 10$),代表测试组数。 对于每组测试数据,第一行包含两个整数 $n$($1 \le n \le 2 \cdot 10^5$)和 $q$($1 \le q \le 2 \cdot 10^5$),分别表示序列的长度和修改次数。 第二行包含 $n$ 个整数,表示序列 $a_1, a_2, \ldots, a_n$($1\le a_i\le 2\cdot 10^9$)。 接下来的 $q$ 行,每行包含两个整数 $p$($1 \le p \le n$)和 $v$($1 \le v \le 2 \cdot 10^9$),表示将序列中的第 $p$ 个位置的元素修改为 $v$。 单个测试点中 $n$ 之和与 $q$ 之和均不超过 $2\cdot 10^5$。

输出格式

对于每组测试数据,输出 $q + 1$ 行,分别代表未进行任何修改前以及序列 $a$ 每次修改后,序列中的「好数字」的个数。

说明/提示

Initially, the only good partition size is $k = 1$. After the first modification, the sequence becomes $[4, 5, 2, 6, 1]$. Both $k = 1$ and $k = 2$ are good partition sizes. After the second modification, the sequence becomes $[4, 5, 5, 6, 1]$. The good partition sizes are $k = 1$, $k = 2$, and $k = 4$.