题目链接:

hdu: http://acm.hdu.edu.cn/showproblem.php?pid=1754

题解:

单点更新,成段查询。

代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define lson o<<1
#define rson (o<<1)|1
#define M l+(r-l)/2
using namespace std; const int maxn = 2e5 + ; int n, m;
int maxv[maxn<<]; void build(int o, int l, int r) {
if (l == r) {
scanf("%d", maxv + o);
}
else {
build(lson, l, M);
build(rson, M + , r);
maxv[o] = max(maxv[lson], maxv[rson]);
}
} int _po, _v;
void update(int o, int l, int r) {
if (l == r) {
maxv[o] = _v;
}
else {
if (_po <= M) update(lson, l, M);
else update(rson, M + , r);
maxv[o] = max(maxv[lson], maxv[rson]);
}
} int ql,qr;
int _max;
void query(int o, int l, int r) {
if (ql <= l&&r <= qr) {
//printf("(%d,%d):%d\n", l, r,maxv[o]);
_max = max(_max, maxv[o]);
}
else {
//printf("(%d,%d):%d\n", l, r, maxv[o]);
if (ql <= M) query(lson, l, M);
if (qr > M) query(rson, M + , r);
}
} int main() {
while (scanf("%d%d", &n, &m) == ) {
build(, , n);
char cmd[];
while (m--) {
scanf("%s", cmd);
if (cmd[] == 'Q') {
_max = -;
scanf("%d%d", &ql,&qr);
query(, , n);
printf("%d\n", _max);
}
else if (cmd[] == 'U') {
scanf("%d%d", &_po, &_v);
update(, , n);
}
}
}
return ;
}

HDU 1754 I Hate It 线段树(单点更新,成段查询)的更多相关文章

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

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

  2. hdu 1754 I Hate It 线段树 单点更新 区间最值

    线段树功能:update:单点更新 query:区间最值 #include <bits/stdc++.h> #define lson l, m, rt<<1 #define r ...

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

    #include<iostream> #include<string> #include<algorithm> #include<cstdlib> #i ...

  4. HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)

    HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...

  5. HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)

    HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...

  6. HDU 1166 敌兵布阵(线段树单点更新,板子题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. HDU 1166 敌兵布阵(线段树单点更新)

    敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...

  8. HDU 1166 敌兵布阵(线段树单点更新,区间查询)

    描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...

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

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

随机推荐

  1. 如何创建一个新的vue项目

    一.cnpm安装 1.百度node官网,进入官网下载安装包安装好node环境 2.成功后打开cmd命令行工具,执行node-v命令,查看node版本号,如果能输出版本号说明安装成功 3.推荐使用淘宝 ...

  2. vue-网易云音乐

    vuejs仿写网易云音乐webapp 1.项目API来源 2.项目地址 3.项目主要截图 ​ ​ ​ ​ 4.功能 音乐播放,搜索及主要页面的展示,用户登录部分及登录后才能获取的数据还未实现 5.技术 ...

  3. php 获取当前完整url地址

    echo $url = $_SERVER["REQUEST_SCHEME"].'://'.$_SERVER["SERVER_NAME"].$_SERVER[&q ...

  4. PHP读取excel表格,和导出表格

    读取表格 public function excel(){ import("Common.Vendor.Excel.PHPExcel"); $filename="./fi ...

  5. 1.Hadoop集群安装部署

    Hadoop集群安装部署 1.介绍 (1)架构模型 (2)使用工具 VMWARE cenos7 Xshell Xftp jdk-8u91-linux-x64.rpm hadoop-2.7.3.tar. ...

  6. 【二】Spark 核心

    spark 核心 spark core RDD创建 >>> RDD转换 >>> RDD缓存 >>> RDD行动 >>> RDD输 ...

  7. Go 学习之路:引用类型与值类型

    Golang中只有三种引用类型:slice(切片).map(字典).channel(管道): 引用类型 引用类型理解为(C语言):指针 值类型 值的拷贝 下面以值类型和slice(切片)例子可知: p ...

  8. 微信小程序真机预览跟本地不同的问题。原文地址:https://blog.csdn.net/qq_27187991/article/details/69664247/

    微信小程序中出现最多的一个问题,就是真机跟本地不同:我简单列举一些我发现的原因,给大家参考,大家也可以把自己发现的东西回复给我,给我参考: 本地看不到数据,就先让本地能看到数据,再看本帖....特别提 ...

  9. 20155209 2016-2017-2 《Java程序设计》第1周学习总结

    20155209 2016-2017-2 <Java程序设计>第1周学习总结 初读教材对每章节的提问 第一章:为什么java被广泛使用,java这样的平台相比其它语言有什么实质的好处? 第 ...

  10. 2017-2018-1 20155230 《信息安全技术》实验二——Windows口令破解

    2017-2018-1 20155230 <信息安全技术>一.Windows口令破解 1.字典破解 (1)为本机创建新用户.为了达到实验效果,用户口令不要设置得过于复杂,可以选择自己的生日 ...