mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 1068_jhgkjhg_ugtdk77.cpp
From http://blog.csdn.net/jhgkjhg_ugtdk77/article/details/47298969
This commit is contained in:
parent
267e0c69bd
commit
ffb2471681
75
hihoCoder/1068_jhgkjhg_ugtdk77.cpp
Normal file
75
hihoCoder/1068_jhgkjhg_ugtdk77.cpp
Normal file
|
@ -0,0 +1,75 @@
|
|||
#include<set>
|
||||
#include<map>
|
||||
#include<cmath>
|
||||
#include<queue>
|
||||
#include<stack>
|
||||
#include<ctime>
|
||||
#include<string>
|
||||
#include<cstdio>
|
||||
#include<cctype>
|
||||
#include<cstring>
|
||||
#include<cstdlib>
|
||||
#include<iostream>
|
||||
#include<algorithm>
|
||||
using namespace std;
|
||||
|
||||
typedef long long ll;
|
||||
typedef unsigned int uint;
|
||||
typedef unsigned long long ull;
|
||||
|
||||
const int maxn = 1e6 + 5;
|
||||
const int max_pos = 20 ;
|
||||
|
||||
struct Q{ int l,r; } quary[maxn];
|
||||
|
||||
int N,Q;
|
||||
int weight[maxn];
|
||||
int rmq[maxn][max_pos];
|
||||
|
||||
void init(){
|
||||
memset(rmq,0x5f,sizeof(rmq));
|
||||
}
|
||||
|
||||
void input(){
|
||||
scanf("%d",&N);
|
||||
for(int i=1;i<=N;i++) scanf("%d",&weight[i]);
|
||||
scanf("%d",&Q);
|
||||
for(int i=1;i<=Q;i++) scanf("%d%d",&quary[i].l,&quary[i].r);
|
||||
}
|
||||
/*
|
||||
int get_mi(int x){
|
||||
int ret=0;
|
||||
for(int i=1;i<=x;i*=2) ret++;
|
||||
return ret-1;
|
||||
}
|
||||
*/
|
||||
|
||||
void RMQ_ST(){
|
||||
for(int i=1;i<=N;i++) rmq[i][0]=weight[i];
|
||||
//int l=get_mi(N);
|
||||
int l=(int)((log(N))/(log(2.0)));
|
||||
for(int j=1;j<=l;j++){
|
||||
for(int i=1;i+(1<<j)-1<=N;i++){
|
||||
rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void solve(){
|
||||
RMQ_ST();
|
||||
for(int i=1;i<=Q;i++){
|
||||
int l=quary[i].l;
|
||||
int r=quary[i].r;
|
||||
//int mi=get_mi(v-u+1);
|
||||
int mi=(int)((log(r-l+1))/(log(2.0)));
|
||||
printf("%d\n",min(rmq[l][mi],rmq[r-(1<<mi)+1][mi]));
|
||||
}
|
||||
}
|
||||
|
||||
int main(){
|
||||
init();
|
||||
input();
|
||||
solve();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user