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

广州天河建站公司鲜花网站开发背景

广州天河建站公司,鲜花网站开发背景,广东网站备案时间,网站策划就业前景对ST表进行一个简单的总结,它可以实现O(1)的静态区间查询,可以适用于查询操作频繁但数据不修改的场景 题目来源 https://www.luogu.com.cn/problem/P3865 题目介绍 给定一个长度为 N 的数列,和 M 次询问,求出每一次询问的区间…

对ST表进行一个简单的总结,它可以实现O(1)的静态区间查询,可以适用于查询操作频繁但数据不修改的场景

题目来源

https://www.luogu.com.cn/problem/P3865

题目介绍

给定一个长度为 N 的数列,和 M 次询问,求出每一次询问的区间内数字的最大值。

解题思路

我们可以每次都对区间进行一次遍历,但这样的复杂度过高,我们可以进行一边预处理,最后实现O(1)的查询,我们先设置一个f的二位数组.

当j==0时,我们将数组中第 i 个元素的值放到f[i][0]中,对于 j > 0 的情况,我们根据倍增思想,将长度为2^j的区间划分为两个长度为2^(j-1)的子区间,即 [i, i + 2^(j - 1) - 1] 和 [i + 2^(j - 1), i + 2^j - 1]

因此,f[i][j]可以通过max(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]) 得到。

对于查询,我们可以设置一个p=log2(r-l+1),然后我们可以在[l,l+2^p-1]和[r-2^p+1,r]两个区间内找到我们所需要值,对其求最大即可。

解题代码

#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 5;
ll f[N][30];
void ST(int xx) {for (int i = 1; i <= xx; i++) {cin >> f[i][0];}for (int i = 1; i <= 20; i++) {for (int j = 1; j + (1 << i) - 1 <= xx; j++) {f[j][i] = max(f[j][i - 1], f[j + (1 << (i - 1))][i - 1]);}}
}
ll check(int l,int r) {ll p = log2(r - l + 1);return max(f[l][p], f[r - (1 << p) + 1][p]);
}
void slove() {int n, q;cin >> n >> q;ST(n);while (q--) {ll x, y;cin >> x >> y;cout << check(x, y) << "\n";}
}
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int ttt = 1;while (ttt--) {slove();}
}

与此同时,我们也可以求最小值,只需修改中间一段的代码

void ST(int xx) {for (int i = 1; i <= xx; i++) {cin >> f[i][0];}for (int i = 1; i <= 20; i++) {for (int j = 1; j + (1 << i) - 1 <= xx; j++) {f[j][i] = min(f[j][i - 1], f[j + (1 << (i - 1))][i - 1]);}}
}
ll check(int l,int r) {ll p = log2(r - l + 1);return min(f[l][p], f[r - (1 << p) + 1][p]);
}

总结

这题就是这样的,主要运用了倍增和预处理的思想。

                                                                                                                                     --撰稿人viture

http://www.dtcms.com/a/408383.html

相关文章:

  • LeetCode 102. 二叉树的层序遍历
  • 网站建设风景课程设计报告网店设计风格怎么写
  • 做网站被网警找六感程序网站建设
  • 网站建设制作官网哈尔滨cms模板建站
  • 数据分析师资源合集
  • 静态网站怎么建设广告网站建设制作设计服务商
  • 网站建设及政务公开工作总结中文旅游网站模板下载
  • docker-镜像
  • 常用外贸网站网站死链检测
  • 沈阳餐饮网站建设建设厅和住建厅有什么区别
  • 网站 app 哪个先做六安百度公司六安百度推广
  • 做外贸阿里巴巴有哪些网站大兴企业官方网站建设
  • 济南商务网站建设站长之家是什么
  • 网站模板之家官网制做网站首先应该怎么做
  • 有专业制作网站的公司吗郑州短视频运营
  • 做静态网站步骤浙江建站
  • 鲜花网站模板网站的内容和功能
  • 虚拟原型技术深度剖析:从基础原理到实战应用的全景指南
  • 网站一般用什么软件做的灰色行业推广渠道
  • 个人做的小网站需要备案个人公积金查询app下载
  • 烟台做网站多少钱wordpress 客户端管理
  • MySQL-数据库日志
  • 设备网站开发普通网站和营销型网站的区别是什么
  • 江阴网站制作设计江门网站开发公司
  • 【Math其他】博饼概率计算
  • 新电商网站中国装修公司排行榜
  • 电子网站商业策划书做外贸的人常用的网站
  • 深圳双语网站制作榆次网站建设公司
  • 海门做网站公司漯河网站开发
  • 第五章:技术深度与广度:构筑你的核心壁垒(4)