CodeForcs 797E Array Queries
Posted Fighting Heart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章
Array Queries CodeForces - 797E
Codeforcs 1114D Flood Fill (区间DP or 最长公共子序列)