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

宁夏做网站找谁石家庄网站托管

宁夏做网站找谁,石家庄网站托管,台州做网站电话,想给公司做个网站 怎么做【题目链接】 ybt 1541:【例 1】数列区间最大值 【题目考点】 1. RMQ问题 RMQ问题是给定一个序列,多次求区间最值的问题。 常用解法: ST表:离线算法,预处理 O ( n log ⁡ n ) O(n\log n) O(nlogn),区间…

【题目链接】

ybt 1541:【例 1】数列区间最大值

【题目考点】

1. RMQ问题

RMQ问题是给定一个序列,多次求区间最值的问题。
常用解法:

  • ST表:离线算法,预处理 O ( n log ⁡ n ) O(n\log n) O(nlogn),区间查询 O ( 1 ) O(1) O(1)
  • 线段树:在线算法,预处理 O ( n ) O(n) O(n),区间查询 O ( log ⁡ n ) O(\log n) O(logn)

【解题思路】

解法1:ST表

概念及解析见洛谷 P3865 【模板】ST 表 && RMQ 问题

解法2:线段树

基本概念及解析见洛谷 P3374 【模板】树状数组 1(线段树解法)
线段树中每个结点保存的值为该结点表示的区间中的最大值。
使用孩子结点的值更新双亲结点的值时(pushUp操作),取左右孩子结点的值的最大值,即为当前结点的值。
区间查询时:

  • 如果当前结点表示的区间被待查询区间完全包含,则返回当前结点的值。
  • 如果当前结点表示的区间没有被待查询区间包含,则求出左右孩子结点表示的区间在待查询区间中的最大值,返回这两个值的最大值。

【题解代码】

解法1:ST表
#include<bits/stdc++.h>
using namespace std;
#define N 100005
#define L 30
int a[N], lg[N], f[N][L];//f[i][j]:a[i]~a[i+2^j-1]中的最大值 
void initLg(int n)
{for(int i = 2; i <= n; ++i)lg[i] = lg[i/2]+1;
}
int query(int l, int r)
{int k = lg[r-l+1];return max(f[l][k], f[r-(1<<k)+1][k]);
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int n, m, l, r;cin >> n >> m;initLg(n);for(int i = 1; i <= n; ++i)cin >> a[i];for(int i = 1; i <= n; ++i)f[i][0] = a[i];for(int j = 1; j <= lg[n]; ++j)for(int i = 1; i+(1<<j)-1 <= n; ++i)f[i][j] = max(f[i][j-1], f[i+(1<<(j-1))][j-1]);while(m--){cin >> l >> r;cout << query(l, r) << '\n';}return 0;
}
解法2:线段树
#include<bits/stdc++.h>
using namespace std;
#define N 100005
struct Node
{int l, r, val;
} tree[4*N];
int a[N];
void pushUp(int i)
{tree[i].val = max(tree[2*i].val, tree[2*i+1].val);
}
void build(int i, int l, int r)
{tree[i].l = l, tree[i].r = r;if(l == r){tree[i].val = a[l];return;}int mid = (l+r)/2;build(2*i, l, mid);build(2*i+1, mid+1, r);pushUp(i);
}
int query(int i, int l, int r)
{if(tree[i].l > r || tree[i].r < l)return INT_MIN;if(l <= tree[i].l && tree[i].r <= r)return tree[i].val;return max(query(2*i, l, r), query(2*i+1, l, r));
}
int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int n, m, l, r;cin >> n >> m;for(int i = 1; i <= n; ++i)cin >> a[i];build(1, 1, n);while(m--){cin >> l >> r;cout << query(1, l, r) << '\n';}return 0;
}
http://www.yayakq.cn/news/717187/

相关文章:

  • 防蚊手环移动网站建设哪个网站建设商招代理
  • 天津市做网站的公司有哪些网站建设季度考核评价工作总结
  • 学校信息门户网站建设微信小程序界面设计模板
  • 旅游网站建设目的icp许可证对网站的要求
  • 怎么在阿里云建立网站网页小游戏平台
  • 关键词挖掘机爱站网网页设计与网站建设论述题
  • 做网站云服务器2m宽带够用吗wordpress主页居中
  • 超能力联盟网站wordpress加上vip解析
  • 跨境电商网站建设流程成都市公服wordpress 经常打不开
  • 专业制作网站费用如何在yahoo上做网站
  • 网站运营招聘想开个视频网站该怎么做
  • 做网站可以赚钱嘛淮南网络建站公司
  • 36氪国外做网站详情页模板免费商用
  • 用自己的身份做网站备案做网站公
  • 未来做那些网站致富视频网站开发流程
  • 网站设计要点 优帮云wordpress 内容管理系统插件
  • 青岛百度网站排名优化郑州pc网站开发
  • 网站建好了 如何推广长春搜索排名提升
  • 网站做三层结构wordpress主题包安装
  • 温州免费个人网站制作公司网络科技有限公司网站建设策划书
  • 临海受欢迎营销型网站建设个人网站作品下载
  • 网络销售网站apple开发者中心
  • 外贸网站怎么做才好1元2元店5元店进货渠道大全
  • 东莞微信网站建设品牌金融直播室网站建设
  • 域名解析网站什么意思最轻快的wordpress主题
  • 蒙文门户网站建设怎么创建视频网站
  • 最新站长seo网站外链发布平台网站自己建设
  • 网站介绍怎么写做资金盘 互助盘的网站
  • 求网站2021给个网址杭州网络科技网站建设
  • 花型图案设计网站做电影网站需要多大空间