Luogu1816 忠诚 (ST表)
2024-09-04 03:32:50
继续复习模板,加深理解ing...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define R(a,b,c) for(register int a = (b); a <= (c); ++ a)
#define nR(a,b,c) for(register int a = (b); a >= (c); -- a)
#define Max(a,b) ((a) > (b) ? (a) : (b))
#define Min(a,b) ((a) < (b) ? (a) : (b))
#define Fill(a,b) memset(a, b, sizeof(a))
#define Swap(a,b) a^=b^=a^=b
#define ll long long
#define ON_DEBUG
#ifdef ON_DEBUG
#define D_e_Line printf("\n\n----------\n\n")
#define D_e(x) cout << #x << " = " << x << endl
#define Pause() system("pause")
#else
#define D_e_Line ;
#endif
struct ios{
template<typename ATP>ios& operator >> (ATP &x){
x = 0; int f = 1; char c;
for(c = getchar(); c < '0' || c > '9'; c = getchar()) if(c == '-') f = -1;
while(c >= '0' && c <= '9') x = x * 10 + (c ^ '0'), c = getchar();
x*= f;
return *this;
}
}io;
using namespace std;
const int N = 100007;
int n;
int f[N][21];
inline void ST_Init(){
R(j,1,20){
R(i,1,n + 1 - (1 << j)){
f[i][j] = Min(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}
}
}
int lg[N];
inline int Query(int l, int r){
int k = lg[r - l + 1] - 1;
return Min(f[l][k], f[r - (1 << k) + 1][k]);
}
int main(){
int Que;
io >> n >> Que;
R(i,1,n){
io >> f[i][0];
// log(n) + 1
lg[i] = lg[i - 1] + ((1 << lg[i - 1]) == i);
}
ST_Init();
while(Que--){
int l, r;
io >> l >> r;
printf("%d ", Query(l, r));
}
return 0;
}
最新文章
- PHPMailer <; 5.2.18 - RCE EXP(Bash)
- sublime text 下的Markdown写作
- MVC - 18.缓存
- BZOJ 1179 Atm 题解
- POJ 3020 Antenna Placement 匈牙利算法,最大流解法 难度:1
- Android相关sdk使用
- 【译文】 C#面向对象的基本概念 (Basic C# OOP Concept) 第一部分(类,对象,变量,方法,访问修饰符)
- Hadoop 2.0中单点故障解决方案总结
- 【POJ 1988】 Cube Stacking (带权并查集)
- 算法-KMP模式匹配算法
- asp.net无法触发asp控件的后台方法
- pyqt5将图片插入面板
- 对称加密算法 ~ Des
- 原生JS实现简易轮播图
- Scala隐式转换
- 移动端自适应rem布局
- Nodejs的npm安装模块时候报错:npm ERR! Error: CERT_UNTRUSTED的解决方法
- HDU 5842 Lweb and String 水题
- Selenium_RC环境配置
- 用C语言实现解析简单配置文件的小工具