Codeforces Global Round 13 C. Pekora and Trampoline

1491C - Pekora and Trampoline

Codeforces Global Round 13 C. Pekora and Trampoline
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=5010;
int s[N];
LL cnt[N];
void solve()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        cnt[i]=0;
        scanf("%lld",&s[i]);
    }
    LL ans=0;
    for(int i=1;i<=n;i++)
    {
        if(s[i]-cnt[i]>1)//要从i这个位置跳
        {
            ans+=s[i]-1-cnt[i];//把i位置上的数减成1
            cnt[i]=s[i]-1;//把i这个位置从s[i]变成了1 自然走了s[i]-1步
        }
        for(int j=i+2;j<=min( n,i+s[i]);j++)cnt[j]++;
        cnt[i+1]+=cnt[i]-(s[i]-1);//如果之前已走比s[i]-1大 把次数累积给下一个
    }
    printf("%lld\n",ans);
}
int main()
{
    int tests=1;
    scanf("%d",&tests);
  // cin>>tests;
    //while(~scanf("%d",&n))
    while(tests--)
    {
        solve();
    }
     return 0;
}
View Code

 

上一篇:postman调试


下一篇:前端接口调试工具Postman教程全都在这!