不说了,直接上代码 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int n,m,x,y,a[N],dp[N][30]; int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } for(int i=1;i<=n;i++){ dp[i][0]=a[i]; } for(int i=1;i<=30;i++){ for(int j=1;j+(1<<i)-1<=n;j++){ dp[j][i]=max(dp[j][i-1],dp[j+(1<<(i-1))][i-1]); } } for(int i=1;i<=m;i++){ scanf("%d%d",&x,&y); int t=log2(y-x+1); printf("%d\n",max(dp[x][t],dp[y-(1<<t)+1][t])); } return 0; }

0 条评论

目前还没有评论...

信息

ID
1363
时间
1000ms
内存
256MiB
难度
6
标签
(无)
递交数
108
已通过
31
上传者