线段树(单点更新) HDU 1754 I Hate It
/*
线段树基本功能:区间最大值,修改某个值
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#define lson l, m, rt << 1
#define rson m+1, r, rt << 1|1 const int MAX_N = + ;
int sum[MAX_N<<];
int a[MAX_N<<]; void pushup(int rt)
{
sum[rt] = sum[rt<<] + sum[rt<<|];
} void maxrt(int rt)
{
sum[rt] = std::max (sum[rt<<], sum[rt<<|]);
} void build(int l, int r, int rt)
{
if (l == r)
{
scanf ("%d", &sum[rt]);
return ;
}
int m = (l + r) >> ;
build (lson);
build (rson);
maxrt (rt);
} void update(int p, int up, int l, int r, int rt)
{
if (l == r)
{
sum[rt] = up;
return ;
}
int m = (l + r) >> ;
if (p <= m) update (p, up, lson);
else update (p, up, rson);
maxrt (rt);
} int query(int ql, int qr, int l, int r, int rt)
{
if (ql <= l && r <= qr)
{
return sum[rt];
}
int m = (l + r) >> ;
int ans = ;
if (ql <= m) ans = std::max(ans, query (ql, qr, lson));
if (qr > m) ans = std::max(ans, query (ql, qr, rson)); return ans;
} int main(void) //HDU 1754 I Hate It
{
//freopen ("inB.txt", "r", stdin);
int n, m, ans, b, c;
char ch[]; while (~scanf ("%d%d", &n, &m))
{
build (, n, );
while (m--)
{
scanf ("%s%d%d", &ch, &b, &c);
if (ch[] == 'Q')
{
ans = query (b, c, , n, );
printf ("%d\n", ans);
}
if (ch[] == 'U')
{
update (b, c, , n, );
}
}
} return ;
}
线段树(单点更新) HDU 1754 I Hate It的更多相关文章
- 线段树-单点更新-HDU 1166 敌兵布阵
#include <iostream> #include <cstdio> #include <string> #include <cstring> u ...
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- HDU 1166 敌兵布阵(线段树单点更新,板子题)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- 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 3074.Multiply game-区间乘法-线段树(单点更新、区间查询),上推标记取模
Multiply game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- hdu 2795 Billboard 线段树单点更新
Billboard Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=279 ...
- hdu 1166 敌兵布阵 (线段树单点更新)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1166 敌兵布阵(线段树单点更新)
敌兵布阵 单点更新和区间更新还是有一些区别的,应该注意! [题目链接]敌兵布阵 [题目类型]线段树单点更新 &题意: 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N< ...
随机推荐
- HDU 6058 Kanade's sum 二分,链表
Kanade's sum Problem Description Give you an array A[1..n]of length n. Let f(l,r,k) be the k-th larg ...
- 3531: [Sdoi2014]旅行
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MB Submit: 1731 Solved: 772 [Submit][Statu ...
- javascript常用事件及方法
1.获取鼠标坐标,考虑滚动条拖动 var e = event || window.event; var scrollX = document.documentElement.scrollLeft || ...
- 【腾讯bugly干货分享】精神哥手把手教你怎样智斗ANR
上帝说要有ANR,于是Bugly就有了ANR上报.那么ANR究竟是什么? 近期非常多童鞋问起精神哥ANR的问题,那么这次就来聊一下,鸡爪怎么泡才好吃.噢不,是怎样高速定位ANR. ANR是什么 简单说 ...
- 传统maven项目创建
转自:https://blog.csdn.net/wangfengtong/article/details/77098238 需求表均同springmvc案例 此处只是使用maven 注意,以下所有需 ...
- codeforces 435 B. Pasha Maximizes 解题报告
题目链接:http://codeforces.com/problemset/problem/435/B 题目意思:给出一个最多为18位的数,可以通过对相邻两个数字进行交换,最多交换 k 次,问交换 k ...
- Linux:NFS文件共享问题重新认识
之前也搭建过nfs,服务器之间目录里面的文件同享也一直正常.今天有现场反映,搭建nfs后,客户端文件在服务器端看不见. 在我之前的认识里,服务器端搭建好并启动nfs服务,客户端mount后,客户端.服 ...
- linux:在vmware上模拟新加一个硬盘对其格式化分区
在实际情况中,很容易有系统硬盘空间不够,然后需要添加新硬盘情况:这里我用vmware来模拟实验: 一:在一个Linux vmware上创建一个虚拟硬盘 1.打开vmware,选择一个已经搭建好的l ...
- [Java] static, final
1.静态成员 静态成员独立于类的对象,先于对象的存在而存在.无论创建了类的多少个对象,静态成员都只有一个实例空间.一个静态变量被同一个类的所有对象共享.当改变了其中一个对象的静态变量时,其余对象的静态 ...
- select查询不到实际存在的
转自:https://blog.csdn.net/jack0201/article/details/77868604