Codeforces-797E-Array Queries(dp)

来源:互联网 发布:切换ip软件 编辑:程序博客网 时间:2024/06/05 11:04

题目链接:Codeforces-797E-Array Queries

对于 k>n 的询问,直接暴力来算,复杂度为 O(n)
对于 kn的询问,O(n1.5)预处理出答案dp[p][k]

#include<bits/stdc++.h>using namespace std;const int maxn=1e5+7;int dp[maxn][350];int a[maxn];int main(){    int n;    scanf("%d",&n);    for(int i=1;i<=n;i++) scanf("%d",&a[i]);    int h=sqrt(n)+1;    for(int i=n;i>=1;i--)        for(int j=0;j<h;j++)        {            if(a[i]+i+j>n) dp[i][j]=1;            else dp[i][j]=dp[a[i]+i+j][j]+1;        }    int q;    scanf("%d",&q);    while(q--)    {        int p,k;        scanf("%d%d",&p,&k);        if(k<h) printf("%d\n",dp[p][k]);        else        {            int ans=0;            while(p<=n)            {                p+=a[p]+k;                ans++;            }            printf("%d\n",ans);        }    }}
0 0
原创粉丝点击