hihoCoder week16 RMQ-ST算法
RMQ问题 用的st表吧,读入数据挺多的,输出数据也挺多的
我还用了 cout<<endl; T了.. 真的是 做题不带脑子的
#include <bits/stdc++.h> using namespace std; const int N = 1e6+10; const int Maxn = 21; int n, dp[N][Maxn]; // dp[i][j] 表示 [i, i+2^j-1]区间的最小值 int main() { freopen("in.txt","r",stdin); scanf("%d", &n); for(int i=0; i<n; i++) { scanf("%d", &dp[i][0]); } for(int j=1; j<=20; j++) { for(int i=0; i+(1<<j)-1<n; i++) { dp[i][j] = min(dp[i][j-1], dp[i+(1<<(j-1))][j-1]); } } int m; scanf("%d", &m); for(int i=0; i<m; i++) { int u,v; scanf("%d %d", &u, &v); u--, v--; int len = v - u + 1; int t = log2(len); // cout << len << " "<<t <<endl; // cout << <<endl; printf("%d\n", min(dp[u][t], dp[v-(1<<t)+1][t])); } return 0; }