- 「一本通 4.2 例 1」数列区间最大值
11111
- 2025-3-23 9:43:39 @
#include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int n, m, a[N], x, y,dp[N][30]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; for(int i = 1;i<=n;i++) cin>>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++){ cin>>x>>y; int t = log2(y-x+1); cout<<max(dp[x][t], dp[y-(1<<t)+1][t])<<"\n"; } return 0; }
0 条评论
目前还没有评论...
信息
- ID
- 1363
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 108
- 已通过
- 31
- 上传者