CF2081B.Balancing
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Ecrade 有一个整数数组 a1,a2,…,an。保证对于每个 1≤i<n,ai=ai+1。
Ecrade 可以通过若干次操作将数组变为严格递增的数组。
每次操作中,他可以选择两个整数 l 和 r(1≤l≤r≤n),并将 al,al+1,…,ar 替换为任意 r−l+1 个整数 al′,al+1′,…,ar′。替换后的数组需要满足以下约束:
- 对于每个 l≤i<r,ai′ 和 ai+1′ 之间的比较关系必须与原数组中 ai 和 ai+1 的比较关系相同。即,若原数组中 ai<ai+1,则替换后必须有 ai′<ai+1′;若原数组中 ai>ai+1,则替换后必须有 ai′>ai+1′;若原数组中 ai=ai+1,则替换后必须有 ai′=ai+1′。
Ecrade 想知道使数组严格递增所需的最少操作次数。由于问题有一定难度,请你帮助他!
输入格式
每个测试包含多个测试用例。第一行输入测试用例数量 t(1≤t≤104)。接下来描述每个测试用例。
每个测试用例的第一行输入一个整数 n(2≤n≤2⋅105)。
每个测试用例的第二行输入 n 个整数 a1,a2,…,an(−109≤ai≤109)。
保证对于每个 1≤i<n,ai=ai+1。
保证所有测试用例的 n 总和不超过 2⋅105。
输出格式
对于每个测试用例,输出一个整数表示使数组严格递增所需的最少操作次数。
输入输出样例
输入#1
4 3 3 2 1 3 3 1 2 4 -2 -5 5 2 7 1 9 1 9 8 1 0
输出#1
2 1 1 3
说明/提示
第一个测试用例中,一种获得最少操作次数的方式为:
- 第一次操作选择 l=2,r=2,将 a2′=4,此时数组变为 [3,4,1];
- 第二次操作选择 l=1,r=2,将 a1′=−1,a2′=0,此时数组变为 [−1,0,1]。
第二个测试用例中,一种获得最少操作次数的方式为:
- 第一次操作选择 l=2,r=3,将 a2′=4,a3′=5,此时数组变为 [3,4,5]。
第三个测试用例中,一种获得最少操作次数的方式为:
- 第一次操作选择 l=2,r=3,将 a2′=−1,a3′=1,此时数组变为 [−2,−1,1,2]。
翻译由 DeepSeek R1 完成
输入解题思路,AI测评打分。不知道怎么写?