码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForcs 797E Array Queries

时间:2017-05-09 11:23:56      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:turn   else   std   include   tac   打表   code   codeforcs   logs   

$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

标签:turn   else   std   include   tac   打表   code   codeforcs   logs   

原文地址:http://www.cnblogs.com/zufezzt/p/6829181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!