zoukankan      html  css  js  c++  java
  • 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
    ",dp[A][B]);
    		}
    		else 
    		{
    			int ans=0;
    			while(A<=n)
    			{
    				ans++;
    				A=A+a[A]+B;
    			}
    			printf("%d
    ",ans);
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    C语言实现大数计算
    shell编程题(九)
    shell编程题(八)
    信号(一)
    shell编程题(六)
    C语言实现webServer
    chrome导入导出常用书签
    JdbcTemplate
    数据库连接池
    JDBC
  • 原文地址:https://www.cnblogs.com/zufezzt/p/6829181.html
Copyright © 2011-2022 走看看