2023-02-14 算法学习——树状数组/ST表
树状数组用于解决动态查询区间,单点修改的情况
前缀和用于解决静态区间和的情况
差分用于解决多次修改区间值,最后求和(用前缀和)的情况
st表模板
#include<iostream>
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
return x*f;
}
int a[1000010],st[1000010][32];
int query(int l,int r) {
int k = 0;
while(1<<k <= r-l+1) k++;k--; //最后多加了一次
return max(st[l][k],st[r-(1<<k)+1][k]);
}
int main() {
int n = read(),m = read();
// cout<<n<<m<<endl;
for(int i=0;i<n;i++) a[i] = read();
for(int i=0;i<n;i++) {
st[i][0] = a[i];
}
for(int j=1;(1<<j)<=n;j++)
for(int i=0;i+(1<<j-1)-1<n;i++) {
st[i][j] = max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
}
while (m--) {
int l=read(),r=read();
printf("%d\n",query(l-1,r-1));
}
return 0;
}
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现