HDU 1754 I Hate It 线段树(单点更新,成段查询)
题目链接:
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 线段树(单点更新,成段查询)的更多相关文章
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- hdu 1754 I Hate It 线段树 单点更新 区间最值
线段树功能:update:单点更新 query:区间最值 #include <bits/stdc++.h> #define lson l, m, rt<<1 #define r ...
- HDU 1754 I Hate It 线段树 单点更新 区间最大值
#include<iostream> #include<string> #include<algorithm> #include<cstdlib> #i ...
- HDU.1166 敌兵布阵 (线段树 单点更新 区间查询)
HDU.1166 敌兵布阵 (线段树 单点更新 区间查询) 题意分析 加深理解,重写一遍 代码总览 #include <bits/stdc++.h> #define nmax 100000 ...
- HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对)
HDU.1394 Minimum Inversion Number (线段树 单点更新 区间求和 逆序对) 题意分析 给出n个数的序列,a1,a2,a3--an,ai∈[0,n-1],求环序列中逆序对 ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
- HDU 1166 敌兵布阵(线段树单点更新,区间查询)
描述 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况 ...
- HDU 1754 I Hate It(线段树单点替换+区间最值)
I Hate It [题目链接]I Hate It [题目类型]线段树单点替换+区间最值 &题意: 本题目包含多组测试,请处理到文件结束. 在每个测试的第一行,有两个正整数 N 和 M ( 0 ...
随机推荐
- day 32 管道,信号量,进程池,线程的创建
1.管道(了解) Pipe(): 在进程之间建立一条通道,并返回元组(conn1,conn2),其中conn1,conn2表示管道两端的连接对象,强调一点:必须在产生Process对象之前产生管道. ...
- CentOS6安装各种大数据软件 第三章:Linux基础软件的安装
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- Leecode刷题之旅-C语言/python-389 找不同
/* * @lc app=leetcode.cn id=389 lang=c * * [389] 找不同 * * https://leetcode-cn.com/problems/find-the-d ...
- go基础语法-变量定义
1.基础定义 变量类型在变量名后 var a int var s string 2.定义并赋值 var a,b int = 1,2 var s string="abc" 3.类型推 ...
- Linux 下 终端 相关的命令
1. 概述 Linux 服务器, 通常可以由多个终端连接 简单介绍一些 终端 相关的操作 最终的目的, 是定位到某个终端, 然后把它 踢下来, 甚至可以不让他再次连接 2. 环境 操作系统 CentO ...
- 与虚拟机和linux的初次接触
初次接触虚拟机 根据老师所给的资源和教程,虚拟机安装的过程十分顺利. 接下来是在虚拟机上安装linux操作系统我下载了破解版的Ubuntu,也是十分顺利 接下来就是安装虚拟机增强功能,命令有些繁琐,在 ...
- 20155315 2016-2017-2 《Java程序设计》第一周学习总结
教材学习内容总结 第一章中提到了Java的前世今生和三大平台,我了解到Java SE包括JVM,JRE,JDK和Java语言.java最基本的特性之一是"跨平台",这使得Java语 ...
- install netcdf
https://gist.github.com/perrette/cd815d03830b53e24c82
- Hibernate 3.0 HelloWorld
说明 基于Hibernate 3.0,Mysql5.0,java jdk 1.7,运行需要的lib 库,从http://files.cnblogs.com/HCCZX/Hibernate_Lib.ra ...
- easyui -validatebox 验证框加载
问题: easyui验证狂框有时会验证输入字符的位数,或者验证有效字符组合 解决: 使用easyui的验证框,继承验证框,指定输入框为验证框即可 $(function(){ $.extend($.fn ...