HDU 1754 I Hate It(区间最值问题&线段树)
来源:互联网 发布:arm linux gcc 4.5.1 编辑:程序博客网 时间:2024/06/05 23:56
题目链接:[kuangbin带你飞]专题七 线段树 B - I Hate It
Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
题意
Description
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
Input
本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0
Output
对于每一次询问操作,在一行里面输出最高成绩。
思路
裸的模版题,线段树求解区间最值。
代码
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cstdlib>#include <vector>using namespace std;const int N = 200009;const int MAX = N*3;int Sum[MAX];void build(int l, int r, int k){ if(l == r) { scanf("%d", &Sum[k]); return; } int mid = (l+r)>>1; build(l, mid, k<<1); build(mid+1, r, k<<1 | 1); Sum[k] = max(Sum[k<<1], Sum[k<<1 | 1]);}void update(int l, int r, int pos, int d, int k){ if(l == r) { Sum[k] = d; return; } int mid = (l+r)>>1; if(pos<=mid) update(l, mid, pos, d, k<<1); else update(mid+1, r, pos, d, k<<1 | 1); Sum[k] = max(Sum[k<<1], Sum[k<<1 | 1]);}int find(int l, int r, int tol, int tor, int k){ if(tol <= l && tor >= r) return Sum[k]; int mid = (l+r)>>1; int ans = 0; if(tol <= mid) ans = max(ans, find(l, mid, tol, tor, k<<1)); if(tor > mid) ans = max(ans, find(mid+1, r, tol, tor, k<<1 | 1)); return ans;}int main(){ ios_base::sync_with_stdio(false); int n, m; while(~scanf("%d%d", &n, &m)) { build(1, n, 1); char str[10]; int i, j; while(m--) { scanf("%s%d%d", str, &i, &j); if(str[0] == 'U') update(1, n, i, j, 1); else printf("%d\n" ,find(1, n, i, j, 1)); } } return 0;}
0 0
- hdu 1754 I Hate It 线段树-区间最值
- HDU-1754I Hate It 线段树区间最值
- HDU 1754 I Hate It(区间最值问题&线段树)
- HDU OJ 1754 I Hate It 【线段树之求区间最值】
- hdu 1754 I Hate It(线段树单点更新及区间最值)
- hdu 1754 I Hate It(线段树,单点替换,求区间最值)
- HDU 1754 I Hate It(线段树:单点替换,区间最值)
- hdu 1754 I Hate It (线段树功能:单点更新和区间最值)
- hdu 1754 I Hate It 线段树 单点更新 求区间最值
- hdu 1754 I Hate It(线段树,单点更新,区间最值)
- hdu 1754 I Hate It(线段树之 单点更新+区间最值)
- HDU 1754-I Hate It(线段树:单点更新,区间最值)
- HDU 1754 I Hate It 【线段树 (单点替换 区间最值】
- HDU - 1754 - I Hate It (线段树 - 区间最值)
- HDU 1754 I hate it 【线段树--单点更新,区间最值】
- HDU 1754 I Hate It (线段树 单点替换, 区间最值)
- HDU 1754 I Hate It(线段树维护 区间最值)
- HDU 1754 I Hate It(线段树单点替换/区间最值)
- Windows命令:Net使用详解
- swift部分控件学习 源码集合
- Android上实现仿IOS弹性ScrollView
- Unity3D学习笔记(二十)用键盘选取/切换目标生物
- Hibernate——报错:org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
- HDU 1754 I Hate It(区间最值问题&线段树)
- 感受5.12汶川大地震
- 第一次被狗咬
- 南非世界杯-我在南非(二)
- 我的博客今天2岁187天啦!
- 构想我的新浪博客
- 我对网赚的看法(教程,经典,注册…
- 其实减肥很容易
- Unity3D学习笔记(二十一)导入WOW动画不完美修复方案