POJ 3264
来源:互联网 发布:淘宝收藏店铺怎么删除 编辑:程序博客网 时间:2024/04/29 09:22
线段树模板题,而且还不用更新;
只需要开两个树,一个记录小一个记录大就可以了:
以下是代码:
#include<stdio.h>#include<algorithm>#include<string.h>#include<iostream>#define INF 1000000#define MAXN 50002#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int Max[MAXN<<2],Min[MAXN<<2];int input[MAXN];int n,m;struct ansreturn{ int maxans,minans;};void PushUp(int rt){ Max[rt]=max(Max[rt<<1],Max[rt<<1|1]); Min[rt]=min(Min[rt<<1],Min[rt<<1|1]); return;}void build(int l,int r,int rt){ if(l==r) { Max[rt]=input[l]; Min[rt]=input[l]; return; } int m=(l+r)>>1; build(lson); build(rson); PushUp(rt); return;}ansreturn query(int ll,int rr,int l,int r,int rt){ ansreturn ans; ansreturn temp; if(ll<=l&&rr>=r) { ans.maxans=Max[rt]; ans.minans=Min[rt]; return ans; } int m=(l+r)>>1; ans.maxans=-INF; ans.minans=INF; if(ll<=m) { temp=query(ll,rr,lson); ans.maxans=max(ans.maxans,temp.maxans); ans.minans=min(ans.minans,temp.minans); } if(rr>m) { temp=query(ll,rr,rson); ans.maxans=max(ans.maxans,temp.maxans); ans.minans=min(ans.minans,temp.minans); } return ans;}int main(){ int x,y; ansreturn ans; while(scanf("%d%d",&n,&m)!=EOF) { for(int i=1;i<=n;i++) scanf("%d",&input[i]); build(1,n,1); for(int i=0;i<m;i++) { scanf("%d%d",&x,&y); ans=query(x,y,1,n,1); printf("%d\n",ans.maxans-ans.minans); } } return 0;}
0 0
- poj 3264
- POJ 3264
- POJ 3264
- poj 3264
- POJ 3264
- poj 3264
- poj 3264
- poj 3264
- poj 3264
- POJ 3264
- poj 3264
- poj-3264
- poj 3264
- POJ-3264
- poj-3264
- POJ 3264
- POJ 3264
- poj 3264
- javaweb14_JDBC
- 收集了一些国外 DICOM 文件下载网站
- JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件
- ubuntu12.04 telnet配置
- Java 学习用书指导
- POJ 3264
- 点阵LCD中具体的像素点和十六进制数的关系
- 递归加暴力打表,求c(n,m)中m种组合方案,总和为素数
- 7、vim插件管理器-----vundle
- 详解vsftpd搭建ftp和ftps
- Java编程规范
- 机器学习week9(一)_anomaly detection
- codec 直接读取jpeg文件的尺寸
- ValueError: unsupported format character