(线段树) I Hate It --hdu--1754 (入门)
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1754
这次的代码和上个代码很相似,只不过上次的节点里存的是sum值,这次节点里存放的是Max, 正在慢慢找感觉
节点里保存的值是十分重要的!!!!
代码:
#include<stdio.h>
#include<algorithm>
#include<stdlib.h>
#include<string.h>
using namespace std; #define Lson r<<1
#define Rson r<<1|1 const int N = *1e6+; struct SegmentTree
{
int L, R;
int MAX;
int Mid()
{
return (R+L)>>;
}
}a[N<<]; void BuildSegTree(int r, int L, int R)
{
a[r].L=L, a[r].R=R; if(L==R)
{
scanf("%d", &a[r].MAX);
return ;
} BuildSegTree(Lson, L, a[r].Mid());
BuildSegTree(Rson, a[r].Mid()+, R); a[r].MAX = max(a[Lson].MAX, a[Rson].MAX);
} void Update(int r, int i, int e)
{
a[r].MAX = max(a[r].MAX, e); if(a[r].L==a[r].R)
return ; if(i<=a[r].Mid())
Update(Lson, i, e);
else if(i>a[r].Mid())
Update(Rson, i, e);
} int Query(int r, int L, int R)
{
if(a[r].L==L && a[r].R==R)
return a[r].MAX; if(R<=a[r].Mid())
return Query(Lson, L, R);
else if(L>a[r].Mid())
return Query(Rson, L, R);
else
{
int Lsum = Query(Lson, L, a[r].Mid());
int Rsum = Query(Rson, a[r].Mid()+, R); return max(Lsum, Rsum);
}
} int main()
{
int n, m; while(scanf("%d%d", &n, &m)!=EOF)
{
BuildSegTree(, , n); char s[];
int L, R, A, B; while(m--)
{
scanf("%s", s);
if(s[]=='Q')
{
scanf("%d%d", &L, &R);
printf("%d\n", Query(, L, R));
}
else
{
scanf("%d%d", &A, &B);
Update(, A, B);
}
}
}
return ;
}
(线段树) I Hate It --hdu--1754 (入门)的更多相关文章
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 线段树 扫描线 L - Atlantis HDU - 1542 M - City Horizon POJ - 3277 N - Paint the Wall HDU - 1543
学习博客推荐——线段树+扫描线(有关扫描线的理解) 我觉得要注意的几点 1 我的模板线段树的叶子节点存的都是 x[L]~x[L+1] 2 如果没有必要这个lazy 标志是可以不下传的 也就省了一个pu ...
- POJ3648 A Simple Problem with Integers(线段树之成段更新。入门题)
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 53169 Acc ...
- 线段树练习[单点更新] HDU 2795 Billboard
题目大意:有一个h*w的公告榜,可以依次在上面添加信息.每个信息的长度为x,高为1. 优先在最上面加入,如果空间足够的话,然后优先放在最左面.统计每条公告最终的位置,即它所在的行数. 这里是线段树来存 ...
- 线段树->面积并 Atlantis HDU - 1542
题目链接:https://cn.vjudge.net/problem/HDU-1542 题目大意:求面积并 具体思路:我们首先把矩形分割成一横条一横条的,然后对于每一个我们给定的矩形,我们将储存两个点 ...
- 线段树 + 区间更新: HDU 4893 Wow! Such Sequence!
Wow! Such Sequence! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- 线段树 面积并问题 hdu 1255 1542
重点整理面积并的思想 以及PushUp的及时更新 还有就是cover的实现 以及建树每个节点存的信息(每个节点存的是一个线段的信息) http://www.tuicool.com/articles/6 ...
- 线段树(区间维护):HDU 3308 LCIS
LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 线段树(维护最大值):HDU Billboard
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
随机推荐
- To zero
Let bygone be bygone. Now everything changed. In fact, everything occurs to me cause I am a loser i ...
- 迷你MVVM框架 avalonjs 1.3.8发布
avalon1.3.8主要是在ms-repeat. ms-each. ms-with等循环绑定上做重大性能优化,其次是对一些绑定了事件的指令添加了roolback,让其CG回收更顺畅. 重构ms-re ...
- Pandas数据规整
Pandas数据规整 数据分析和建模方面的大量编程工作都是用在数据准备上的,有时候存放在文件或数据库中的数据并不能满足数据处理应用的要求 Pandas提供了一组高级的.灵活的.高效的核心函数和算法,它 ...
- 群晖Nas中搭建Intellij Idea的LicenseServer服务
下载IntelliJIDEALicenseServer(直接找度娘) 准备 shellX 或其他 ssh工具,个人比较喜欢 mobaxterm. 通过 ssh工具连接到群晖中,用户名和密码就是登陆群晖 ...
- Mysql count(1) group_concat 高级用法(count 过滤条件,group_concat过滤条件)
1.官方文档: count:COUNT(expr) [over_clause] https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.h ...
- GEOquery
1)介绍 来自NCBI的Gene Expression Omnibus(GEO)作为各种高通量实验数据的公共存储库. 这些数据包括基于单通道和双通道微阵列的实验,测量mRNA,基因组DNA和蛋白质丰度 ...
- vs2010+Aspx进行sharepoint2010工作流开发(3) 资料整理
http://www.cnblogs.com/janet/archive/2010/04/24/1719315.html http://www.cnblogs.com/poissonnotes/arc ...
- IIS7配置下载apk以及目录浏览
IIS7为了增加安全性,如果需要禁止目录浏览.只需要按下面的步骤执行就可以 1.选择站点:2.选择功能视图:3.选择IIS下面的目录浏览:4.在右上角的操作中选择“打开功能”:5.选择右边的禁用. 今 ...
- windows下多个文件合并成一个文件
如果你拿到的是一堆文件,那么你想把它合并成一个文件来使用,那么按下面的步骤,轻轻松松就可以搞定. 第一步:把所有要合并的文件放到同一个文件下面 第二步:在CMD里面进入到你的文件目录 第三步:输入如下 ...
- Android热修复(HotFix)实战
线上的BUG一直是程序员头疼的问题.有时候仅仅是因为几行的代码,就能让你的用户损失严重.谷歌在Android Studio 加入了Insttan Run 机制.通过Apk动态加载的技术实现了应用非安装 ...