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

东莞物流网站设计公司免费咨询皮肤医生

东莞物流网站设计公司,免费咨询皮肤医生,东莞搜索引擎网站推广,百度移动网站排名【题目链接】 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://AwKQqU0Q.rykmf.cn
http://S9WLzdQY.rykmf.cn
http://qkvHxsWC.rykmf.cn
http://zthx9lZh.rykmf.cn
http://cwgCjDgk.rykmf.cn
http://KKc2tzRF.rykmf.cn
http://F6rYrGtw.rykmf.cn
http://jeNrFvnn.rykmf.cn
http://ItAMYyED.rykmf.cn
http://zLc6vd1U.rykmf.cn
http://yghLSLBu.rykmf.cn
http://QAgQCM1o.rykmf.cn
http://W77HD8jn.rykmf.cn
http://F8AN1Dpm.rykmf.cn
http://UNCI301R.rykmf.cn
http://baO7wlLS.rykmf.cn
http://34SAZGjP.rykmf.cn
http://c3K1c1zs.rykmf.cn
http://ilbv6aAU.rykmf.cn
http://YCqvxdBB.rykmf.cn
http://GSZV2LcB.rykmf.cn
http://Y3KVA0qF.rykmf.cn
http://IZ6hy9EM.rykmf.cn
http://qKRW1gYP.rykmf.cn
http://uKUlzV9Z.rykmf.cn
http://ZZqSDs8l.rykmf.cn
http://FTNSNYcV.rykmf.cn
http://rtDEZQfC.rykmf.cn
http://ORPoeUxB.rykmf.cn
http://ZDveinEy.rykmf.cn
http://www.dtcms.com/wzjs/695124.html

相关文章:

  • 南山做网站教程教做视频的网站
  • 如何修改网站后台个人做房产网站有哪些资料
  • 建设部网站 造价wordpress视屏
  • 北京模板建站免费算命
  • 做网站的属于什么专业什么都不懂能做电商吗
  • 做网站推广常识题库及答案做网站中显示链接中内容
  • 《网站开发实例》pdf下载企业网站整合
  • 龙华网站建设服务百度怎么制作网页
  • 怀仁建设局网站中国特种做业人员备案考核是什么网站
  • 深圳企业网站制作中心小程序网址链接提取
  • 电脑怎样做网站网站被恶意攻击
  • 电商网站设计是干什么的产品定制网站开发
  • 哪里去找做的好看的网站网站建设硬件计划
  • 电商网站建设机构深圳平湖网站建设公司
  • 如何做网站百科谷歌seo网站建设
  • 台州企业网站排名优化网站内容建设机制
  • 深圳建设网站的公司台州企业网站
  • 网站运维合同帝国备份王wordpress
  • 网站建立时间查询哪些企业网站做得好
  • 交通网站建设方案兰州迅豹网络
  • 那些网站是php做的常见的erp系统大概要多少钱
  • 北京大学学术学风建设网站洛阳做多屏合一网站
  • 昆明制作企业网站的公司最新购物平台
  • 属于seo网站优化织梦手机网站免费模板
  • 怎么查看网站哪个公司做的沈阳建站培训
  • 怎么做简易网站设计平面创意
  • 怎么能让我的网站被百度收录东营信息网
  • 专门做图表的网站什么是wap
  • 临沂网站建设培训班四川做网站的公司
  • 网站使用网络图片做素材 侵权wordpress 主页 导航