Array Queries CodeForces - 797E
Posted qieqiemin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Array Queries CodeForces - 797E相关的知识,希望对你有一定的参考价值。
非常好的一道题目,
分析,如果用暴力的话,时间复杂度是O(q*n)稳稳的超时
如果用二维DP的话,需要O (n*n)的空间复杂度,会爆空间。
那么分析一下,如果k>sqrt(n)的话,不需要sqrt(n) 次就可以达到大于n
而如果k<sqrt(n)的情况下,不妨用DP来处理,时间复杂度和空间复杂度皆为O ( n*sqrt( n ) )
那么都可以分类处理了。
详细见code
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <stack> #include <map> #include <set> #include <vector> #define rep(i,x,n) for(int i=x;i<n;i++) #define repd(i,x,n) for(int i=x;i<=n;i++) #define pii pair<int,int> #define pll pair<long long ,long long> #define gbtb std::ios::sync_with_stdio(false) #define MS0(X) memset((X), 0, sizeof((X))) #define MSC0(X) memset((X), ‘ ‘, sizeof((X))) #define pb push_back #define mp make_pair #define fi first #define se second #define gg(x) getInt(&x) using namespace std; typedef long long ll; inline void getInt(int* p); const int maxn=1000010; /*** TEMPLATE CODE * * STARTS HERE ***/ int n; int a[maxn]; int p,q; int k; const int maxm=317 ; int dp[100010][maxm]; void init(void) { for(int j=1;j<maxm;j++) { for(int i=n;i>=1;i--) { if(i+j+a[i]>n) dp[i][j]=1; else dp[i][j]=1+dp[i+j+a[i]][j]; } } } int solve(int p,int k) { int cnt=0; while(p<=n) { p=a[p]+p+k; cnt++; } return cnt; } int main() { gg(n); repd(i,1,n) { gg(a[i]); } init(); gg(q); while(q--) { gg(p); gg(k); if(k>315) printf("%d ",solve(p,k)); else printf("%d ",dp[p][k]); } return 0; } inline void getInt(int* p) { char ch; do { ch = getchar(); } while (ch == ‘ ‘ || ch == ‘ ‘); if (ch == ‘-‘) { *p = -(getchar() - ‘0‘); while ((ch = getchar()) >= ‘0‘ && ch <= ‘9‘) { *p = *p * 10 - ch + ‘0‘; } } else { *p = ch - ‘0‘; while ((ch = getchar()) >= ‘0‘ && ch <= ‘9‘) { *p = *p * 10 + ch - ‘0‘; } } }
以上是关于Array Queries CodeForces - 797E的主要内容,如果未能解决你的问题,请参考以下文章
Array Queries CodeForces - 797E
CodeForces 863D Yet Another Array Queries Problem 暴力
CodeForces 1114F--Please, another Queries on Array?(欧拉函数+线段树)
[codeforces]Round #538 (Div. 2) F. Please, another Queries on Array?