思路:与我发表的上一遍求和的思想一样   仅仅是如今变成求最大值而已

AC代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
inline int Max(int a, int b)
{
return a > b ? a : b;
}
const int MAXN = 200001; // 区间范围
struct
{
int l, r, m; // l 左端点,r 右端点。m 为该区间的最大分数
} tree[MAXN*4];
int a[MAXN];
void creat(int t, int l, int r)
{
tree[t].l = l, tree[t].r = r;
if(l == r) // 叶子节点
{
tree[t].m = a[l];
return; //递归出口
}
int m = (l+r) / 2;
creat(t*2, l, m), creat(t*2+1, m+1, r); // 左孩子
tree[t].m = Max(tree[t*2].m, tree[t*2+1].m); // 右孩子
}
void update(int t, int n, int v) // 把n 点的值更新为v
{
if(tree[t].l == tree[t].r && tree[t].l == n)
{
tree[t].m = v;
return;
}
if(n <= tree[t*2].r) update(t*2, n, v);
else update(t*2+1, n, v);
tree[t].m = Max(tree[t*2].m, tree[t*2+1].m);
}
int query(int t, int l, int r) // 查询t 节点在【l,r】区间范围的最大值
{
if(l == tree[t].l && r == tree[t].r) return tree[t].m;
int s;
if(r <= tree[t*2].r) s = query(t*2, l, r);
else if(l >= tree[t*2+1].l) s= query(t*2+1, l, r);
else s = Max(query(t*2, l, tree[t*2].r), query(t*2+1, tree[t*2+1].l, r));
return s;
}
int main()
{
int n, m, i, x1, x2;
char s[2];
while(scanf("%d%d", &n, &m) != EOF)
{
for(i = 1; i <= n; i++) scanf("%d", &a[i]);
creat(1, 1, n); // 根节点标号为1,区间为【1,n】
while(m--)
{
scanf("%s%d%d", s, &x1, &x2);
if(s[0] == 'Q') printf("%d\n", query(1, x1, x2)); // 查询
else update(1, x1, x2); // 更新
}
}
return 0;
}

HDU 1754 I Hate it (线段树最大值模板)的更多相关文章

  1. hdu 1754 I Hate It 线段树 点改动

    // hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...

  2. hdu 1754 I Hate It (线段树、单点更新)(PS:ios::sync_with_stdio(false)可以加快cin、cout的读取写出速度)

    I Hate ItTime Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  3. HDU 1754 I Hate It 线段树单点更新求最大值

    题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...

  4. HDU 1754 I Hate It(线段树之单点更新,区间最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. HDU 1754 I Hate It 线段树RMQ

    I Hate It Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=175 ...

  6. HDU 1754 I Hate It (线段树)

    题目链接 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老 ...

  7. hdu 1754 I Hate It (线段树求区间最值)

    HDU1754 I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u D ...

  8. HDU 1754 I Hate It(线段树单点替换+区间最值)

    I Hate It [题目链接]I Hate It [题目类型]线段树单点替换+区间最值 &题意: 本题目包含多组测试,请处理到文件结束. 在每个测试的第一行,有两个正整数 N 和 M ( 0 ...

  9. HDU 1754 I Hate It (线段树)

    题意:略. 析:裸的线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include < ...

随机推荐

  1. Windows phone开发数据绑定系列(1)--了解数据绑定

    (部分内容参考MSDN文档) 数据绑定是在应用程序UI与业务逻辑之间建立连接的过程.通过数据绑定的方式实现了后台数据和前台UI元素的关联, 为用户提供了更好地交互体验. 数据绑定一般有以下几种体现方式 ...

  2. Django中的bug总结

    1.插入数据库的时候,少写一个字段.ps:看准数据库的字段,是不是非空,是不是外键. 2.当同一个视图中需要连续操作两个数据表时,先看好两个表的外键之间的关系,再进行操作表.比如:一个订单表order ...

  3. unicode、UTF-8、UTF-16的历史

    1:中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字. 2:汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB231 ...

  4. python 动态修改 类和实例 的方法

    相信很多朋友在编程的时候都会想修改一下已经写好的程序行为代码,而最常见的方式就是通过子类来重写父类的一些不满足需求的方法.比如说下面这个例子. class Dog: def bark(self): p ...

  5. lvs直接路由模式DR模式

    1)实验所有关闭防火墙systemtcl stop firewalldsystemctl disable firewalldsetenforce 0iptables -F2)配置负载调度器配置虚拟IP ...

  6. localStorage、sessionStorage、cookie

    vue下的全局变量和vuex里的state都是临时变量,页面刷新就都没了.

  7. TeX中的引号(Tex Quotes, UVa 272)

    在TeX中,左双引号是“``”,右双引号是“''”.输入一篇包含双引号的文章,你的任务是 把它转换成TeX的格式. 样例输入: "To be or not to be," quot ...

  8. NOIP2016 DAY2 T3 愤怒的小鸟

    传送门 题目描述 Kiana 最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于 (0,0)(0,0) 处,每次 Kiana 可以用它向第一象限发射一只红色的 ...

  9. python-写入csv 文件

    项目要做一个导出客户信息的功能,需要写入csv: 注意文件写入的方式  例如   write open(‘w’) 从头开始写,之前写的会被替换  write open(‘a’) 则代表追加,文件指针放 ...

  10. lucene_03_索引的增删改查

    lucene索引的添加见 http://www.cnblogs.com/getchen/p/8615276.html 入门代码. 公共代码 public <T extends Query> ...