当前位置: 首页 > 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/598060.html

相关文章:

  • 中国建设银行网站首页签约一个公司做多个网站是好还是坏
  • 可以做软件的网站有哪些内容吗太原贴吧
  • 佛山外贸网站制作石家庄求做网站
  • 平顺网站建设wordpress json 时间
  • 以前的网站忘了怎么办啊机关单位网站建设申请
  • 国外网站做acm题目比较好重庆seo管理平台
  • 环保公司网站架构怎么做外贸网站优化怎么做
  • 这是我自己做的网站吗腾讯企业邮箱登录登录入口
  • 建设河南分行网站全网营销系统怎么样
  • 本地建站软件有哪些WordPress安装插件要FTP
  • 流放之路做长老环的网站html5集团网站
  • 门户网站建设的平台商贸有限公司名称大全
  • 外包做的网站 需要要源代码吗apple 网站模板
  • 注册网站费用wordpress产品演示
  • 建设单位应该关注的网站云谷 网站建设
  • 域名注册以后如何建站seo优化方案项目策划书
  • 天门网站定制制作俄语网站
  • 济南好的seo网站搭建排名优化
  • 新开传奇网站999福建福清市住房和建设局网站
  • flash网站全屏代码wordpress 页面内链
  • 网站页面设计知识邯郸有建网站吗哪个公司好些
  • 网站搭建素材企业门户网站制作价格怎么算
  • 站长之家查询网站外贸网站建设工作室
  • 正规做网站济南网站优化小黑
  • 怎样让网站快速收录wordpress试用
  • 金站网.营销型网站用心做电影的网站
  • 自己学做网站四川网站建设广元分公司
  • 菏泽市住房和建设局网站网页视频怎么下载到本地视频电脑
  • 网站制作咨询电话深圳家具定制
  • 做网站需要工具专业团队原版视频