CF竞赛题目讲解_CF1405E(树状数组)
2022-07-31 10:47 作者:Clayton_Zhou | 我要投稿
//https://codeforces.com/problemset/problem/1405/E
给定一个序列,当 a[ i] = i ,也就是对应位置的数字等于下标时,可以删除这个数。然后该数之后的数全体前移一位。
很容易可以得到结论,令 fi 为前 i 个数中可以删的数据个数。当前数可以删除当且仅当 i − a[i] ≤ fi
查询为将 [1,x] 和[n−y+1,n] 的范围内的 a[i] 改为 n+1 时(下文称做屏蔽),问你此时最多能删多少个数。
对于每个数,考虑屏蔽前 x 个数时,能否删除。 我们考虑最大的 x,作为limit,屏蔽前 x 个数且 x ≤limit时,可以正常删除,否则不能。
input
13 5
2 2 3 9 5 4 6 5 7 8 3 11 13
3 1
0 0
2 4
5 0
0 12