维护区间最值的模板题。

1.树状数组

 1 #include<bits/stdc++.h>
2 //树状数组做法
3 using namespace std;
4 const int N=5e4+10;
5 int m,ma[N],mi[N],n,c[N];
6
7 int lowbit(int x){
8 return x&(-x);
9 }
10
11 void ins(int x,int v){
12 while(x<=n){
13 ma[x]=max(ma[x],v);mi[x]=min(mi[x],v);
14 x+=lowbit(x);
15 }
16 }
17
18 int que(int L,int R){
19 int maxx=-1,minn=1e9;
20 while(L<=R){
21 for(;R-lowbit(R)>=L;R-=lowbit(R)) maxx=max(maxx,ma[R]),minn=min(minn,mi[R]);
22 maxx=max(c[R],maxx);minn=min(minn,c[R]);
23 R--;
24 }
25 return maxx-minn;
26 }
27
28 int main(){
29 memset(mi,0x3f,sizeof(mi));
30 memset(ma,0,sizeof(ma));
31 scanf("%d%d",&n,&m);
32 for(int i=1;i<=n;i++){
33 int x;scanf("%d",&x);
34 ins(i,x);
35 c[i]=x;
36 }
37 while(m--){
38 int a,b;
39 scanf("%d%d",&a,&b);
40 cout<<que(a,b)<<endl;
41 }
42 }

2.线段树

 1 #include<bits/stdc++.h>
2 //线段树做法
3 using namespace std;
4 const int N=5e4+10;
5 #define lson l,mid,pos<<1
6 #define rson mid+1,r,pos<<1|1
7 int maxx[N<<2],minn[N<<2],MAX,MIN;
8
9 void up(int pos){
10 maxx[pos]=max(maxx[pos<<1],maxx[pos<<1|1]);
11 minn[pos]=min(minn[pos<<1],minn[pos<<1|1]);
12 }
13
14 void build(int l,int r,int pos){
15 if(l==r){
16 int x;scanf("%d",&x);
17 maxx[pos]=minn[pos]=x;
18 return ;
19 }
20 int mid=(l+r)>>1;
21 build(lson);build(rson);
22 up(pos);
23 }
24
25 void query(int L,int R,int l,int r,int pos){
26 if(L<=l && R>=r){
27 MAX=max(MAX,maxx[pos]);
28 MIN=min(MIN,minn[pos]);
29 return ;
30 }
31 int mid=(l+r)>>1;
32 if(L<=mid) query(L,R,lson);
33 if(R>mid) query(L,R,rson);
34 }
35
36 int main(){
37 int n,m;
38 scanf("%d%d",&n,&m);
39 build(1,n,1);
40 while(m--){
41 MAX=0,MIN=1e9;
42 int a,b;scanf("%d%d",&a,&b);
43 query(a,b,1,n,1);
44 cout<<MAX-MIN<<endl;
45 }
46 return 0;
47 }

洛谷P2880 [USACO07JAN] Balanced Lineup G(树状数组/线段树)的更多相关文章

  1. 洛谷 P2880 [USACO07JAN]Balanced Lineup G (ST表模板)

    题意:给你一组数,询问\(q\)次,问所给区间内的最大值和最小值的差. 题解:经典RMQ问题,用st表维护两个数组分别记录最大值和最小值然后直接查询输出就好了 代码: int n,q; int a[N ...

  2. 洛谷P2414 阿狸的打字机 [NOI2011] AC自动机+树状数组/线段树

    正解:AC自动机+树状数组/线段树 解题报告: 传送门! 这道题,首先想到暴力思路还是不难的,首先看到y有那么多个,菜鸡如我还不怎么会可持久化之类的,那就直接排个序什么的然后按顺序做就好,这样听说有7 ...

  3. 树状数组 && 线段树应用 -- 求逆序数

    参考:算法学习(二)——树状数组求逆序数 .线段树或树状数组求逆序数(附例题) 应用树状数组 || 线段树求逆序数是一种很巧妙的技巧,这个技巧的关键在于如何把原来单纯的求区间和操作转换为 求小于等于a ...

  4. hdu1394(枚举/树状数组/线段树单点更新&区间求和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:给出一个循环数组,求其逆序对最少为多少: 思路:对于逆序对: 交换两个相邻数,逆序数 +1 ...

  5. hdu 1166:敌兵布阵(树状数组 / 线段树,入门练习题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  6. hdu 5147 Sequence II【树状数组/线段树】

    Sequence IITime Limit: 5000/2500 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...

  7. [洛谷P1198/BZOJ1012][JSOI2008] 最大数 - 树状数组/线段树?

    其实已经学了树状数组和线段树,然而懒得做题,所以至今没写多少博客 Description 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数 ...

  8. 【洛谷4396/BZOJ3236】[AHOI2013]作业(莫队+分块/树状数组/线段树)

    题目: 洛谷4396 BZOJ3236(权限) 这题似乎BZOJ上数据强一些? 分析: 这题真的是--一言难尽 发现题面里没说权值的范围,怕出锅就写了离散化.后来经过面向数据编程(以及膜神犇代码)知道 ...

  9. BZOJ.3110.[ZJOI2013]K大数查询(整体二分 树状数组/线段树)

    题目链接 BZOJ 洛谷 整体二分求的是第K小(利用树状数组).求第K大可以转为求第\(n-K+1\)小,但是这样好像得求一个\(n\). 注意到所有数的绝对值\(\leq N\),将所有数的大小关系 ...

随机推荐

  1. 非root用户linux下安装FFTW

    一.环境准备 确保g++可用本次编译是基于 GNU C++ 环境的,因此务必确定g++编译器可用,使用如下命令验证:命令:g++ --version出现类似如下输出则表明编译器可用: 二.下载FFTW ...

  2. SQLServer的两个日期相减(间隔)datediff函数

    select datediff(year, 开始日期,结束日期); --两日期间隔年  select datediff(quarter, 开始日期,结束日期); --两日期间隔季  select da ...

  3. Java8新特性: lambda 表达式介绍

    一.lambda 表达式介绍 lambda 表达式是 Java 8 的一个新特性,可以取代大部分的匿名内部类,简化了匿名委托的使用,让你让代码更加简洁,优雅. 比较官方的定义是这样的: lambda ...

  4. 英特尔CPU系列

    1.酷睿(Core)系列,主要应用于管理 3D.高级视频和照片编辑,玩复杂游戏,享受高分辨率 4K 显示. 2.奔腾(PenTIum)系列,主要应用于借助功能丰富的处理器,加快便携式 2 合 1 电脑 ...

  5. PROFIBUS,PROFINET,Ethernet三者的区别

    PROFIBUS,PROFINET,Ethernet三者的区别 简单一点说,PROFINET=PROFIbus+etherNET,把Profibus的主从结构移植到以太网上,所以profinet会有C ...

  6. MySQL金融应用场景下跨数据中心的MGR架构方案(2)

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 如何在多个数据中心部署多套MGR集群,并实现故障快速切换. 上篇文章介绍了如何在多数据中心部署多套MGR集群,并构建集群间 ...

  7. 技术分享 | 浅谈MySQL闪回的实现

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 1.闪回实现原理 2.binlog文件格式初探 3.闪回实现过程 1.闪回实现原 ...

  8. 点击>>>解锁Apache Hadoop Meetup 2021!

    " 10月16日,属于开源发烧友的狂欢日来啦! Apache Hadoop Meetup 2021 开源大数据行业交流盛会盛大开启!让我们相约北京,一起嗨翻初秋~ 在当今信息化时代,逐渐成熟 ...

  9. java-注释、API之字符串(String)

    /** * 文档注释只定义在三个地方 : 类.常量.方法上 * 在类上定义文档注释用来说这个类设计及其解决问题等相关描述信息 * @author 作者 * @version  1.0 21/08/17 ...

  10. Vue 内联样式

    前置说明 Vue 绑定HTML 全局属性style,可以动态地改变属性值.这里就不讲内联样式的基础了,具体轻查看官网文档 Class 与 Style 绑定. 主要分为以下两个步骤进行: v-bind ...