sparse table
This commit is contained in:
parent
1770d113bd
commit
cd16421688
4
.gitignore
vendored
4
.gitignore
vendored
@ -53,3 +53,7 @@ day5/perfect/perfect
|
|||||||
day5/good/good
|
day5/good/good
|
||||||
day5/fair/fair
|
day5/fair/fair
|
||||||
day5/RMQ/st
|
day5/RMQ/st
|
||||||
|
day5/RMQ/st_raw
|
||||||
|
build
|
||||||
|
.xmake
|
||||||
|
.vscode
|
30
.vscode/launch.json
vendored
30
.vscode/launch.json
vendored
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
// 使用 IntelliSense 了解相关属性。
|
|
||||||
// 悬停以查看现有属性的描述。
|
|
||||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"type": "gdb",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "GDB",
|
|
||||||
"program": "${workspaceFolder}/${command:AskForProgramName}",
|
|
||||||
"stopOnEntry": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "by-gdb",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "Launch(gdb)",
|
|
||||||
"program": "${fileBasenameNoExtension}",
|
|
||||||
"cwd": "${workspaceRoot}"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "lldb",
|
|
||||||
"request": "launch",
|
|
||||||
"name": "Debug",
|
|
||||||
"program": "${workspaceFolder}/?",
|
|
||||||
"args": [],
|
|
||||||
"cwd": "${workspaceFolder}"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
7
day5/RMQ/1.in
Normal file
7
day5/RMQ/1.in
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
5 5
|
||||||
|
1 2 3 4 5
|
||||||
|
1 2
|
||||||
|
2 3
|
||||||
|
3 4
|
||||||
|
2 4
|
||||||
|
4 5
|
@ -1,7 +1,62 @@
|
|||||||
#include<bits/stdc++.h>
|
#include<bits/stdc++.h>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
#ifdef OIDEBUG
|
||||||
|
#define PRINT_ARRAY(v,size){cout<<#v<<" [";for(int i=1;i<=size;i++){cout<<v[i]<<(i!=(size)?",":"]\n");}}
|
||||||
|
#define PRINT_VALUE(v){cout<<#v<<" :"<<(v)<<endl;}
|
||||||
|
#define DEBUG_CODE(code){code}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef OIDEBUG
|
||||||
|
#define PRINT_ARRAY(v,size)
|
||||||
|
#define PRINT_VALUE(v)
|
||||||
|
#define DEBUG_CODE(code)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const int MAX_N=1e3+5;
|
||||||
|
constexpr const int MAX_K=303;
|
||||||
|
int k,log_2[MAX_N],n,a[MAX_N],s[MAX_N][MAX_K],m;
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
|
cin>>n>>m;
|
||||||
|
log_2[1]=0;
|
||||||
|
for(int i=2;i<=n;i++){
|
||||||
|
log_2[i]=log_2[i/2]+1;
|
||||||
|
}
|
||||||
|
k=log_2[n]+1;
|
||||||
|
PRINT_VALUE(log_2[3])
|
||||||
|
PRINT_ARRAY(log_2, n)
|
||||||
|
for(int i=1;i<=n;i++){
|
||||||
|
cin>>a[i];
|
||||||
|
}
|
||||||
|
PRINT_ARRAY(a, n);
|
||||||
|
for(int i=1;i<=n;i++){
|
||||||
|
s[i][0]=a[i];
|
||||||
|
}
|
||||||
|
PRINT_VALUE(k);
|
||||||
|
for(int j=1;j<=k;j++){
|
||||||
|
PRINT_VALUE(1<<j);
|
||||||
|
for(int i=1;i+(1<<j)-1<=n;i++){
|
||||||
|
PRINT_VALUE(i);
|
||||||
|
PRINT_VALUE(j);
|
||||||
|
PRINT_VALUE(i+(1<<j))
|
||||||
|
s[i][j]=min(s[i][j-1],s[i+(j>>1)][j-1]);
|
||||||
|
PRINT_VALUE(s[i][j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i=1;i<=m;i++){
|
||||||
|
int r,l;
|
||||||
|
cin>>l>>r;
|
||||||
|
PRINT_VALUE(l);
|
||||||
|
PRINT_VALUE(r);
|
||||||
|
int j=log_2[r-l+1];
|
||||||
|
PRINT_VALUE(j);
|
||||||
|
PRINT_VALUE(r-l+1);
|
||||||
|
PRINT_VALUE(s[l][j]);
|
||||||
|
PRINT_VALUE(s[r-(1<<j)+1][j]);
|
||||||
|
PRINT_VALUE(r-(1<<j)+1);
|
||||||
|
PRINT_VALUE(1<<j);
|
||||||
|
cout<<min(s[l][j],s[r-(1<<j)+1][j])<<endl;
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user