hdu-1754 I Hate It---线段树模板题
题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1754
题目大意:
求区间最大值+单点修改
解题思路:
直接套用模板即可
#include<bits/stdc++.h>
#define MID(l, r) (l + (r - l) / 2)
#define lson(o) (o * 2)
#define rson(o) (o * 2 + 1)
using namespace std;
typedef long long ll;
const int INF = 1e9 +;
const int maxn = 1e6 + ;
int a[maxn];
struct node
{
int l, r, mmax, mmin, sum;
}tree[maxn];
void build(int o, int l, int r)
{
tree[o].l = l, tree[o].r = r;
if(l == r)
{
tree[o].mmax = tree[o].mmin = tree[o].sum = a[l];
return;
}
int m = MID(l, r);
int lc = lson(o), rc = rson(o);
build(lc, l, m);
build(rc, m + , r);
tree[o].mmax = max(tree[lc].mmax, tree[rc].mmax);
tree[o].mmin = min(tree[lc].mmin, tree[rc].mmin);
tree[o].sum = tree[lc].sum + tree[rc].sum;
}
int ql, qr;//查询区间[ql, qr]中的max,min,sum
int ans_max, ans_min, ans_sum;
void query_init()//查询前,将全局变量初始化
{
ans_max = -INF;
ans_min = INF;
ans_sum = ;
}
void query(int o)
{
if(ql <= tree[o].l && qr >= tree[o].r)//[L, R]包含在[ql, qr]区间内,直接用该节点的信息,达到线段树查询快的操作
{
ans_max = max(ans_max, tree[o].mmax);
ans_min = min(ans_min, tree[o].mmin);
ans_sum += tree[o].sum;
return;
}
int m = MID(tree[o].l, tree[o].r);
if(ql <= m)query(lson(o));
if(qr > m)query(rson(o));
}
//单点更新,a[p] = v;
int p, v;
void update(int o)
{
if(tree[o].l == tree[o].r)
{
tree[o].mmax = v;
tree[o].mmin = v;
tree[o].sum = v;
return;
}
int m = MID(tree[o].l, tree[o].r);
int lc = lson(o), rc = rson(o);
if(p <= m)update(lc);
else update(rc);
tree[o].mmax = max(tree[lc].mmax, tree[rc].mmax);
tree[o].mmin = min(tree[lc].mmin, tree[rc].mmin);
tree[o].sum = tree[lc].sum + tree[rc].sum;
}
int main()
{
int n, m;
while(scanf("%d%d", &n, &m) != EOF)
{
for(int i = ; i <= n; i++)scanf("%d", &a[i]);
build(, , n);
char s[];
int x, y;
while(m--)
{
scanf("%s%d%d", s, &x, &y);
if(s[] == 'Q')
{
ql = x, qr = y;
query_init();
query();
printf("%d\n", ans_max);
}
else if(s[] == 'U')
{
p = x, v = y;
update();
}
}
}
return ;
}
hdu-1754 I Hate It---线段树模板题的更多相关文章
- HDU 1754 I Hate It(线段树模板题)
题目链接: 传送门 I Hate It Time Limit: 3000MS Memory Limit: 32768 K Description 很多学校流行一种比较的习惯.老师们很喜欢询问, ...
- hdu 1754 I Hate It 线段树基础题
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...
- hdu 1754 I Hate It(线段树水题)
>>点击进入原题测试<< 思路:线段树水题,可以手敲 #include<string> #include<iostream> #include<a ...
- hdu 1754 I Hate It 线段树 点改动
// hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...
- HDU 1698 Just a Hook (线段树模板题-区间求和)
Just a Hook In the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of t ...
- [AHOI 2009] 维护序列(线段树模板题)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...
- hdu1823(二维线段树模板题)
hdu1823 题意 单点更新,求二维区间最值. 分析 二维线段树模板题. 二维线段树实际上就是树套树,即每个结点都要再建一颗线段树,维护对应的信息. 一般一维线段树是切割某一可变区间直到满足所要查询 ...
- [POJ2104] 区间第k大数 [区间第k大数,可持久化线段树模板题]
可持久化线段树模板题. #include <iostream> #include <algorithm> #include <cstdio> #include &l ...
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- UESTC - 1057 秋实大哥与花 线段树模板题
http://acm.uestc.edu.cn/#/problem/show/1057 题意:给你n个数,q次操作,每次在l,r上加上x并输出此区间的sum 题解:线段树模板, #define _CR ...
随机推荐
- PIE SDK介绍
1. 产品概述 PIE-SDK是航天宏图自主研发的PIE二次开发组件包,集成了专业的遥感影像处理.辅助解译.信息提取.专题图表生成.二三维可视化等功能.底层采用微内核式架构,由跨平台的标准C++编写, ...
- PIE SDK地图平移校正
地图平移校正,当加载两幅空间参考一样的影像,其中一幅影像有点偏移,这时就以另一幅影像为基准将其进行平移校正,然后保存,再次加载就不会出现偏移了. 下面来介绍下实现的主要代码: 首先通过选中目录树中的要 ...
- 1.rabbitmq 集群版安装及使用nginx进行四层负载均衡设置
1.安装erlang 需要注意erlang的版本是否满足rabbitmq的需求 这里用到的版本是:Erlang 19.0.4 RabbitMQ 3.6.15 wget http://www.rab ...
- shiro app
写在前面 我们知道,shiro框架在Java Web应用中使用时,本质上是通过filter方式集成的. 也就是说,它是遵循过滤器链规则的:filter的执行顺序与在web.xml中定义的顺序一致,如下 ...
- spark ALS 推荐算法参数说明
- golang context 剖析 1.7.4 版本
1. 内部结构之 - timerCtx . type timerCtx struct { cancelCtx timer *time.Timer // Under cancelCtx.mu. dead ...
- Linux下MySQL数据库主从同步配置
说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备 ...
- python制作 whl 源文件,并制作本地pip源
制作whl 1.创建用于存放wheel文件目录 mkdir wheels 2.安装wheel库 pip install wheel 3.进入wheels目录 cd wheels 4.使用pip wh ...
- pat02-线性结构2. 一元多项式求导 (25)
02-线性结构2. 一元多项式求导 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 设计函数求一元多项式的导数.(注:xn(n为整 ...
- 几个免费 IP 归属地查询 API
1.淘宝:同个IP不能连续查询,需要时间间隔 http://ip.taobao.com/service/getIpInfo.php?ip=114.114.114.114 返回结果 { "co ...