CFCF2184G.Nastiness of Segments
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Andrey 记得自己有 n 个方块,这些方块编号从 1 到 n。在编号为 i 的方块上,最初写着一个整数 ai。他将这些方块按照编号递增的顺序排成一排:最前面是 1 号方块,然后是 2 号方块,以此类推,最后是 n 号方块。
对于一段连续的方块区间 [l,r](1≤l≤r≤n),我们称一个整数 d(0≤d≤r−l)是“nasty”的,如果 min(al,al+1,…,al+d)=d。
Andrey 很好奇,所以他想要进行 q 次两种类型的操作之一:
- 将第 i 个方块上的数字 ai 改成 x。
- 查询区间 [l,r](1≤l≤r≤n)的 nastiness,其中“nastiness”指的是该区间内“nasty”数 d(0≤d≤r−l)的个数。
Andrey 不知道如何快速处理这些操作,因此他向你求助。请你帮助他完成上述操作!
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 q(1≤n,q≤2⋅105),分别表示方块的数量和操作的数量。
接下来一行包含 n 个整数 a1,a2,…,an(1≤ai≤2⋅105),表示最初每个方块上写的数字。
接下来的 q 行描述需要执行的操作。
每行的开头是一个整数 idx(1≤idx≤2),表示操作类型。
若 idx=1,则后面跟着两个整数 i(1≤i≤n)和 x(1≤x≤2⋅105),表示第一种操作。
若 idx=2,则后面跟着两个整数 l 和 r(1≤l≤r≤n),表示第二种操作。
保证所有测试用例中 n 的总和不超过 2⋅105,q 的总和也不超过 2⋅105。
输出格式
对于每个测试用例,对于每一个第二类型的操作,输出一个整数,表示该区间的 nastiness。
输入输出样例
输入#1
1 5 5 1 2 3 4 5 2 1 5 1 1 5 1 2 5 1 3 1 2 1 5
输出#1
1 0