CF1604A Era
题目大意
给出一个数列 ,求出需要在 序列中插入多少个数可以将 变成一个合法序列。
合法序列的定义是:。
组数据。
对于 的数据,。
解题思路
首先需要明白,没有删除操作,也就是说一个数不能被删除。
若 ,因为 不能变,那只能变 ,即在 前插入数。
由于要最少,肯定是插 与 的差值个数。
具体见代码。
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;
}
本文来自博客园,作者:蒟蒻orz,转载请注明原文链接:https://www.cnblogs.com/orzz/p/18122097