CF1604A Era

题目大意

给出一个数列 aa,求出需要在 aa 序列中插入多少个数可以将 aa 变成一个合法序列。

合法序列的定义是:1ia,aii\forall 1 \leq i \leq |a|,a_i \leq i

tt 组数据。

对于 100%100\% 的数据,1t200,1n100,1ai1091≤t≤200,1≤n≤100,1≤a_i≤10^9

解题思路

首先需要明白,没有删除操作,也就是说一个数不能被删除。

ai>ia_i > i,因为 aia_i 不能变,那只能变 ii,即在 aia_i 前插入数。

由于要最少,肯定是插 aia_iii 的差值个数。

具体见代码。

CODE

#include <bits/stdc++.h>

using namespace std;

int T;

int main()
{
    cin >> T;
    while (T --)
    {
        int n;
        cin >> n;
        int ans = 0, cnt = 0;
        for (int i = 1 ; i <= n ; i ++)
        {
            int a;
            scanf("%d", &a);
            if (a > i + ans)
            {
                ans += a - ans - i;
            }
        }
        cout << ans << endl;
    }
    return 0;
}
posted @ 2021-11-12 17:44  蒟蒻orz  阅读(2)  评论(0编辑  收藏  举报  来源