A120388.刷怪塔
普及-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
在修建好刷怪塔后,Steve 需要运输怪物掉落的物品。具体地,有 n 层刷怪平台,其中第 i 层掉落的物品需要运往第 pi 层。保证 p 是一个 1∼n 的排列。
Steve 发现将物品向上运输是困难的,于是他想要将最高的 x 层刷怪平台改为接收平台,此时第 i 层的物品能被运往第 pi 层,即满足目标的条件为:
- 第 i 层平台没有被改为接收平台,即 i≤n−x;
- 第 pi 层平台的高度小于等于第 i 层平台的高度,即 pi≤i;或者第 pi 层平台被改为接收平台,即 pi>n−x。
Steve 想让你帮他将 x 的值设置为 0 到 n 之间的某个数,使得满足目标的平台层数尽量多。
同时你还需要支持 q 次修改,每次修改给出 x,y,表示交换 px,py 的值,你需要在所有修改前和每次修改后输出目前最多能有多少个平台满足目标。
输入格式
输入的第一行包含一个整数 c,表示测试点编号。
第二行包含两个正整数 n,q,分别表示刷怪平台的数量和修改的次数。
第三行包含 n 个正整数 p1,p2,…,pn,其中 pi 表示第 i 层平台中掉落的物品的目标平台。
接下来 q 行,每行两个正整数 x,y,表示交换 px 和 py 的值。
输出格式
输出 q+1 行,每行一个整数,其中第 i 行的整数表示进行前 i−1 次操作后的答案。
输入输出样例
输入#1
0 8 5 4 1 7 2 8 3 6 5 1 5 3 7 2 8 4 6 1 7
输出#1
5 6 6 5 5 4
说明/提示
【样例解释】
对于修改之前的序列,一种最优的方案是取 x=0,此时满足目标的平台 i 有 2,4,6,7,8。
【数据范围】
| 测试点编号 | 特殊性质 |
|---|---|
| 1−2 | n,q≤100 |
| 3−4 | n,q≤103 |
| 5−6 | pi=n−i+1,q=0 |
| 7−10 | 无 |
对于 100% 的测试点,保证:1≤n≤2×105,0≤q≤2×105,1≤x,y≤n。