要求区间取min和max,可以用st表或线段树维护
st表

#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int n,q,b[N],mn[N][20],mx[N][20];
int read()
{int r=0,f=1;char p=getchar();while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}
int maxx(int l,int r)
{int k=b[r-l+1];return max(mx[l][k],mx[r-(1<<k)+1][k]);
}
int minn(int l,int r)
{int k=b[r-l+1];return min(mn[l][k],mn[r-(1<<k)+1][k]);
}
int main()
{n=read(),q=read();for(int i=1;i<=n;i++)mn[i][0]=mx[i][0]=read();for(int i=2;i<=n;i++)b[i]=b[i>>1]+1;for(int j=1;(1<<j)<=n;j++)for(int i=1;i<=n;i++)mn[i][j]=min(mn[i][j-1],mn[i+(1<<(j-1))][j-1]);for(int j=1;(1<<j)<=n;j++)for(int i=1;i<=n;i++)mx[i][j]=max(mx[i][j-1],mx[i+(1<<(j-1))][j-1]);while(q--){int x=read(),y=read();printf("%d\n",maxx(x,y)-minn(x,y));}return 0;
} 

线段树

#include<iostream>
#include<cstdio>
using namespace std;
const int N=100005;
int n,q,a[N];
struct tree
{int l,r,mi,ma;
}t[N<<1];
int read()
{int r=0,f=1;char p=getchar();while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}
void build(int ro,int l,int r)
{t[ro].l=l,t[ro].r=r;if(l==r){t[ro].mi=a[l];t[ro].ma=a[l];}else{int mid=(l+r)>>1;build(ro<<1,l,mid);build(ro<<1|1,mid+1,r);t[ro].ma=max(t[ro<<1].ma,t[ro<<1|1].ma);t[ro].mi=min(t[ro<<1].mi,t[ro<<1|1].mi);}
}
int maxx(int ro,int l,int r)
{if(t[ro].l==l&&t[ro].r==r)return t[ro].ma;int mid=(t[ro].l+t[ro].r)>>1;if(r<=mid)return maxx(ro<<1,l,r);else if(l>mid)return maxx(ro<<1|1,l,r);elsereturn max(maxx(ro<<1,l,mid),maxx(ro<<1|1,mid+1,r));
}
int minn(int ro,int l,int r)
{if(t[ro].l==l&&t[ro].r==r)return t[ro].mi;int mid=(t[ro].l+t[ro].r)>>1;if(r<=mid)return minn(ro<<1,l,r);else if(l>mid)return minn(ro<<1|1,l,r);elsereturn min(minn(ro<<1,l,mid),minn(ro<<1|1,mid+1,r));
}
int main()
{n=read(),q=read();for(int i=1;i<=n;i++)a[i]=read();build(1,1,n);while(q--){int x=read(),y=read();printf("%d\n",maxx(1,x,y)-minn(1,x,y));}return 0;
} 

转载于:https://www.cnblogs.com/lokiii/p/8939331.html

bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队【st表||线段树】相关推荐

  1. bzoj 1636 bzoj 1699: [Usaco2007 Jan]Balanced Lineup排队(RMQ)

    1699: [Usaco2007 Jan]Balanced Lineup排队 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1514  Solved:  ...

  2. bzoj1699[Usaco2007 Jan]Balanced Lineup排队

    Description 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序列排队. 有一天, John 决定让一些牛们玩一场飞盘比赛. 他准备找一群在对列中为置 ...

  3. [BZOJ] 1637: [Usaco2007 Mar]Balanced Lineup

    1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 697  Solved: 463 ...

  4. bzoj 1637: [Usaco2007 Mar]Balanced Lineup

    1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 689  Solved: 456 ...

  5. bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线【线段树+hash】

    bzoj题面什么鬼啊-- 题目大意:有一个初始值均为0的数列,n次操作,每次将数列(ai,bi-1)这个区间中的数与ci取max,问n次后元素和 离散化,然后建立线段树,每次修改在区间上打max标记即 ...

  6. bzoj 1645: [Usaco2007 Open]City Horizon 城市地平线(线段树扫描线)

    1645: [Usaco2007 Open]City Horizon 城市地平线 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 732  Solved: ...

  7. bzoj 1637: [Usaco2007 Mar]Balanced Lineup【瞎搞】

    我是怎么想出来的-- 把种族为0的都变成-1,按位置x排升序之后,s[i]表示种族前缀和,想要取(l,r)的话就要\( s[r]-s[l-1]==0 s[r]==s[l-1] \),用一个map存每个 ...

  8. Balanced Lineup POJ - 3264(线段树模板+查询比大小+建树)

    题意: 给你n个数,然后问一段区间的最大的差值是多少. 题目: For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always ...

  9. bzoj 1594: [Usaco2008 Jan]猜数游戏【二分+线段树】

    写错一个符号多调一小时系列-- 二分答案,然后判断这个二分区间是否合法: 先按值从大到小排序,然后对于值相同的一些区间,如果没有交集则不合法:否则把并集在线段树上打上标记,然后值小于这个值的区间们,如 ...

最新文章

  1. 54 Node.js快速入门
  2. CTFshow 反序列化 web277
  3. 数据库:case when then
  4. 20.IDA-修改二进制文件、显示修改点
  5. localstorage || globalStorage || userData
  6. 计算机 注册表 远程桌面,仅允许运行使用网络级别身份验证的远程桌面计算机连接失败处理方法(远程桌面连接)...
  7. OpenStack SFC 深入剖析
  8. requests与bs4编码
  9. windows--bat--%0无限执行当前bat脚本
  10. idea设置断点,对于for循环,到指定次数时停止
  11. 现在更新鸿蒙会成为小白鼠吗,安卓11.0被停用,鸿蒙OS即将登上,花粉:宁愿当小白鼠...
  12. jieba java_【NLP】【一】中文分词之jieba
  13. 从U盘还原完ghost系统,重启就提示bootmgr is missing
  14. 我的世界java无限水_我的世界基岩版:如何获得无限水?这里有5种方法,最后一种无中生有...
  15. 健康课程小程序开发,传播正确养生方法,拥抱健康生活
  16. iOS开发笔记1:[转]导航栏里的Back按钮显示不出来
  17. 阿里鱼卡,腾讯王卡,百度圣卡,谁是流量卡中的性价比之王?
  18. 表白神器-摩斯密码1121311233321113212313323332113
  19. Python日期推算实操案例
  20. 用普通话软件测试为什么分数都很低,有没有练习普通话的软件?练习普通话软件推荐...

热门文章

  1. 计算机应用板块还有行情吗,今日股市行情资金收评:计算机应用板块资金流出居前...
  2. linux7 设置dns,RHEL7.0 系列-设置IP地址、网关和DNS
  3. PHP中session特点及用途,PHP特点之会话机制2——Session及其使用
  4. opencv 手选roi区域_利用opencv进行眼动检测
  5. 决策树模型回归可视化分析_【时间序列分析】在论文中用向量自回归(VAR)模型时应注意哪些问题?...
  6. python质数列_现代化程序开发笔记(3)——多文件与模块
  7. 在线预览视频/直播:m3u8、rmpt、mp4、flv
  8. js 在新窗口中打开URL
  9. linux 备份数据,LINUX下备份数据
  10. mybatis 原理_图解源码 | MyBatis的Mapper原理