2.查询:对于输入的边界 left 和 right, 我们令 d = floor(log2(right - left)) ,即使 2^d 成为能够被 [left, right] 覆盖的最大的 d 值。在求得d值之后,我们查询两个区间的最值:[left, left + 2^d] 和 [right - 2^d +1, right];由 d 的条件可得,这两个区间都在[left, right]上,且两个区间之和就是之前的大区间。
ST表基本操作:
#define rep(i,n) for(int i = 1; i <= n; i++) //简写for循环classSTtable{
private:
int Max[Size][31];
int length;
public:
voidread(int n);//输入数组voidinit();//初始化处理intfind(int l, int r);//查询结果
};
#define rep(i,n) for(int i = 1; i <= n; i++) //简写for循环classSTtable{
private:
int Max[Size][31];
int length;
public:
voidadd(int n);//末尾增加元素voiddel();//末尾删除元素intfind(int l, int r);//查询结果
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用