hdu5443 线段树 长春网赛
2015-09-14 19:20
330 查看
#include<stdio.h> #include<string.h> #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define maxn 1100 int sum[maxn<<2]; int max(int x,int y) { return x>y?x:y; } void PushUp(int rt) { sum[rt]=max(sum[rt<<1],sum[rt<<1|1]); } void build(int l,int r,int rt) { if(l == r) { scanf("%d",&sum[rt]); return; } int m = (r + l)/2; build(lson); build(rson); PushUp(rt); } void Updata(int p,int v,int l,int r,int rt) { if(l==r) { sum[rt]=v; return ; } int m=(l+r)/2; if(m < p) Updata(p,v,rson); else Updata(p,v,lson); PushUp(rt); } int Query(int L,int R,int l,int r,int rt) { if(L<=l && R>=r) { return sum[rt]; } int ret=-9999999; int m=(l + r)/2; if(m < L) { ret=max(ret,Query(L,R,rson)); } else if(m >= R) { ret=max(ret,Query(L,R,lson)); } else { ret=max(ret,Query(L,R,rson)); ret=max(ret,Query(L,R,lson)); } return ret; } int main() { int n,m,i; char way[10]; int t; scanf("%d",&t); while(t--) { scanf("%d",&n); build(1,n,1); int time; scanf("%d",&time); while(time--) { int a,b; scanf("%d%d",&a,&b); printf("%d\n",Query(a,b,1,n,1)); } } }
相关文章推荐
- 如何删除windows service (How to delete a windows service)
- 【英语】Bingo口语笔记(82) - go系列
- ZOJ1037
- 第三周项目二顺序表算法库
- 利用try~catch语句来捕获异常
- JS中复制数组
- == 和 Equals 的区别
- 51la流量获取链接
- maven入门(安装配置)
- 24.c++-lib文件简述
- Wow6432Node
- storm传参,限流
- 32bit程序在64bit操作系统下处理重定向细节
- hdoj 5443 The Water Problem 【RMQ】
- MySQL数据库limit分页、排序
- Hibernate-主配置文件
- 遍历对象的list删除时报错问题。
- JSP 四个内置对象的保存范围
- hdoj 5441 Travel 【在边权限制下 并查集划分、合并连通块,求解点对数目】
- zabbix------定义media媒介