HDOJ5443 The Water Problem(线段树)
2015-09-19 20:11
260 查看
题目链接:点击打开链接
长春赛区的签到题,给一个长度为n的序列,然后进行q次询问,每次询问给出两个整数l, r,然后输出序列中[l, r]中最大值。
典型的线段树题目,套个模板轻轻松松AC。
第一次和我的两个队友合作,状态不太好,只A了两题,还得好好努力啊,尤其是我!
AC代码:
长春赛区的签到题,给一个长度为n的序列,然后进行q次询问,每次询问给出两个整数l, r,然后输出序列中[l, r]中最大值。
典型的线段树题目,套个模板轻轻松松AC。
第一次和我的两个队友合作,状态不太好,只A了两题,还得好好努力啊,尤其是我!
AC代码:
#include "iostream" #include "cstdio" #include "cstring" #include "algorithm" using namespace std; #define lson l, m, x << 1 #define rson m + 1, r, x << 1 | 1 const int MAXN = 1010; int n, q, dat[MAXN << 2]; void pushup(int x) { dat[x] = max(dat[x << 1], dat[x << 1 | 1]); } void build(int l, int r, int x) { if(l == r) { scanf("%d", &dat[x]); return ; } int m = (l + r) >> 1; build(lson); build(rson); pushup(x); } int query(int left, int right, int l, int r, int x) { if(left <= l && r <= right) return dat[x]; int m = (l + r) >> 1, ans = 0; if(left <= m) ans = max(ans, query(left, right, lson)); if(right > m) ans = max(ans, query(left, right, rson)); return ans; } int main(int argc, char const *argv[]) { int t; scanf("%d", &t); while(t--) { scanf("%d", &n); build(1, n, 1); scanf("%d", &q); while(q--) { int l, r; scanf("%d%d", &l, &r); printf("%d\n", query(l, r, 1, n, 1)); } } return 0; }
相关文章推荐
- oracle PL/SQL(procedure language/SQL)程序设计之函数+过程+包(转)
- 再谈缓存
- css知多少(9)——float下篇
- hive的远程模式安装(用mysql作为hive的元数据库)
- Linux下mysql的安装
- 【提高学习效率】☞(利用 批处理 快速实现 WIN+R 打开软件)
- Dota2自定义地图模板简介
- 常用类与集合框架--Math类
- HDOJ 5461.Largest Point(贪心)
- ssh无密码登陆(转)
- Java基础知识强化41:StringBuffer类之StringBuffer的反转功能
- 2015-09-19
- Video.js
- HDU 5461 Largest Point (水)
- 计划书
- POJ 1125 Floyd
- Dreamweaver使用过程的小技巧
- hdu5455 Fang Fang(模拟)
- 保持激情
- Car的旅行路线