CFCF2154B.Make it Zigzag
普及-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
长度为 m 的任意整数数组 b 如果对于所有 i(1≤i<m)满足以下条件,则被认为是“awesome”(极棒)的:
- 如果 i 是奇数,则 bi<bi+1。
- 如果 i 是偶数,则 bi>bi+1。
换句话说,数组需满足如下不等式:b1<b2>b3<b4…
给定一个长度为 n 的正整数数组 a。你可以按照任意顺序、任意多次执行以下两种操作:
- 操作 1:选择一个整数 i(1≤i≤n),令 ai:=max(a1,…,ai),即将 ai 替换为前缀最大值。
- 操作 2:选择一个整数 i(1≤i≤n),然后将 ai 减少 1。
请你求出使 a 成为“awesome”数组所需执行操作 2 的最少次数。注意:你不需要最小化执行操作 1 的次数。
输入格式
每组测试包含多个测试用例。第一行输入测试用例的数量 t(1≤t≤104)。接下来每组测试用例包含:
第一行输入一个整数 n(2≤n≤2×105),表示数组 a 的长度。
第二行输入 n 个整数 a1,a2,…,an(1≤ai≤109)。
所有测试用例中 n 的总和不超过 2×105。
输出格式
对于每组测试用例,输出使 a 成为“awesome”数组所需执行操作 2 的最小次数。
输入输出样例
输入#1
7 5 1 4 2 5 3 4 3 3 2 1 5 6 6 6 6 6 7 1 2 3 4 5 6 7 3 3 2 1 2 1 2 9 65 85 19 53 21 79 92 29 96
输出#1
0 1 3 6 1 0 13
说明/提示
在第一个测试用例中,数组已经是“awesome”的,无需任何操作。
在第二个测试用例中,可以按如下方式操作,使 a 成为“awesome”:
- 执行一次操作 2,将 a1 减少 1:[3,3,2,1]→[2,3,2,1]。
- 执行一次操作 1,将 a4 改为 max(2,3,2,1)=3:[2,3,2,1]→[2,3,2,3]。
[2,3,2,3] 是“awesome”数组,因为 2<3>2<3。可以证明,这是使得 a 成为“awesome”数组所需的最少操作 2 次数。