当前位置: 首页 > wzjs >正文

怎么可以联系到网站开发者东莞网站建设服务商

怎么可以联系到网站开发者,东莞网站建设服务商,无锡网站制作无锡做网站,南宁网站建设推广ST表不仅能处理区间最值问题,凡是符合结合律且可重复贡献的信息查询都可以使用ST表高效进行。可重复贡献的意义在于,可以对两个交集不为空的区间进行信息合并,显然最大值、最小值、最大公约数、最小公倍数、按位或、按位与都符合这个条件。 在…

ST表不仅能处理区间最值问题,凡是符合结合律且可重复贡献的信息查询都可以使用ST表高效进行。可重复贡献的意义在于,可以对两个交集不为空的区间进行信息合并,显然最大值、最小值、最大公约数、最小公倍数、按位或、按位与都符合这个条件。

在C++算法中,ST表的实现为以下步骤:

预处理阶段:构建一个二维数组 st [ ][ ],其中 st[i][j] 表示从下标 i 开始、长度为 2^j 的区间内的最值(或其他查询结果)。
预处理阶段时间复杂度为 O(nlogn),其中 n 表示数组的长度。
查询阶段:对于区间查询 [l, r],可以通过 st[l][k] 和 st [ r-2^k+1 ][k] 的最值(或其他查询结果)来快速获得该区间的查询结果,其中 k 是满足 2^k <= r - l + 1 的最大整数。

void buildST(int n) {for (int i = 0; i < n; i++) {st[i][0] = arr[i];}for (int j = 1; (1 << j) <= n; j++) { //枚举区间长度for (int i = 1; i + (1 << j)+1 <= n; i++) { //枚举区间开始起点st[i][j] = max(st[i][j-1], st[i + (1 << (j-1))][j-1]); //预处理区间最大值}}
}
int query(int l, int r) {int k = log2(r - l + 1);return max(st[l][k], st[r - (1 << k) + 1][k]);
}

这里详细解释一下查询代码的原理:

预处理阶段(buildST 函数)中,我们构建了一个二维数组 st,其中 st[i][j] 表示从位置 i 开始、长度为 2^j 的区间内的最大值。

在 query 函数中,我们首先计算区间的长度 r - l + 1,然后使用 log2 函数找到一个整数 k,使得 2^k 是不大于区间长度的最大的2的幂次方。这个 k 值对应了我们在预处理阶段建立的 st 数组的列索引。

接着,我们通过 st[l][k] 和 st[r - (1 << k) + 1][k] 来找到区间 [l, r] 中的最大值。这里的 (1 << k) 表达式实际上就是 2^k,它代表了以 l 为起点、长度为 2^k 的区间的左半部分,而 r - (1 << k) + 1 表示了以 r 为终点、长度为 2^k 的区间的右半部分。

通过比较这两个区间的最大值,我们可以得到区间 [l, r] 中的真正最大值。

下面一个模板题:st表模版题

模板代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define lowbit(x) ((x)&(-x))
#define fi first
#define se second
#define PII pair<int,int>
const int inf=1e18;
const int N=1e5+10;
int a[N],st[N][20];
void buildST(int n) {for (int j = 1; (1 << j) <= n; j++) { for (int i = 1; i + (1 << j)-1 <= n; i++) { st[i][j] = max(st[i][j-1], st[i + (1 << (j-1))][j-1]); }}
}
int query(int l, int r) {int k = log2(r - l + 1);return max(st[l][k], st[r - (1 << k) + 1][k]);
}
void solve(){int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];st[i][0]=a[i];}buildST(n);while(m--){int l,r;cin>>l>>r;cout<<query(l,r)<<"\n";}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);//cout<<fixed<<setprecision(12); int T=1;//cin>>T;while(T--)solve();
}

http://www.dtcms.com/wzjs/837671.html

相关文章:

  • 购物网站建设计划书广州确诊病例最新消息
  • 黄山手机网站建设公司排名网站编辑用什么软件
  • 网站链接建设的作用阿里虚拟主机无法安装wordpress
  • 地方网站建站平台做网站用什
  • 网站建设与管理论文的总结百度指数免费查询
  • 已有网站怎么修改wordpress手动升级插件
  • python做网站还是数据库世界500强企业名单查询
  • 东莞网站优化关键词费用网站网站制作多少钱
  • 开发一个大型网站多少钱淘宝网官方网站免费下载
  • 网站开发问题解决dede网站搬家教程
  • 云南网站开发网络公司前10西宁市网站设计
  • 资阳视频网站建设seo优化工作有哪些
  • 用dw做网站 主题是哪个国外做项目的网站
  • 网站建设验收方式公众号里链接的网站怎么做的
  • 网站建设 会员可以看的内容更多wordpress大学主题教程
  • 福州网站建设推广如何招聘软件网站开发人员
  • 网页设计与网站开发试题网站制作公司
  • 电子商务网站建设与全程实例网络教学
  • 厦门人才网官方网站设计说明英语翻译
  • wordpress设置字体大小宁波seo关键词排名
  • 网站介绍视频怎么做的网站建设创业计划书范文大全
  • 做网站旅游销售如何看网站空间问题
  • 济南网站建设 力选聚搜网络乌兰察布做网站公司
  • 宁波网站建设风格django企业网站源码
  • 阿里云服务器做网站需要备案沈阳模板建站公司有哪些
  • 网站开发和后台维护网站资源做缓存
  • 官方网站建设属于什么科目如何做二级域名网站
  • 青岛美容化妆品外贸网站建设wordpress兼容html5
  • 辽宁省建设厅证书查询网站中国建筑网官网监理工程师网站
  • 社交类网站开发需求分析wordpress 5图片相对路径