首页 > 代码库 > CodeForcs 797E Array Queries

CodeForcs 797E Array Queries

$dp$预处理,暴力。

如果$k > sqrt(n)$,那么答案不会超过$sqrt(n)$,暴力模拟即可。如果$k <= sqrt(n)$,那么可以$dp$预处理打表。

#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <queue>#include <stack>#include <vector>#include <algorithm>using namespace std;int dp[100010][320];int n,q;int a[100010];int main(){	scanf("%d",&n);	for(int i=1;i<=n;i++) scanf("%d",&a[i]);	int x = (int) sqrt(n);	for(int p=1;p<=x;p++)	{		for(int i=n;i>=1;i--)		{			if(i+a[i]+p>n) dp[i][p] = 1;			else dp[i][p] = dp[i+a[i]+p][p] + 1;		}	}	scanf("%d",&q);	for(int i=1;i<=q;i++)	{		int A,B;		scanf("%d%d",&A,&B);		if(B<=x)		{			printf("%d\n",dp[A][B]);		}		else 		{			int ans=0;			while(A<=n)			{				ans++;				A=A+a[A]+B;			}			printf("%d\n",ans);		}	}	return 0;}

 

CodeForcs 797E Array Queries