hdu 1754 线段树 单点更新 水
来源:互联网 发布:这就是面向对象编程 编辑:程序博客网 时间:2024/05/16 11:09
题意:求一段区间内的最大值,和对原来的数组进行改变
做法:入门级的线段树...
#include <iostream>#include <cstdio>#include <cstring>#define LMT 200002#define left l,m,x<<1#define right m+1,r,x<<1|1using namespace std;int smax[LMT<<2];int max(int a,int b){ return a>b?a:b;}void build(int l,int r,int x){ if(l==r) { scanf("%d",&smax[x]); return; } int m=(l+r)>>1; build(left); build(right); smax[x]=max(smax[x<<1],smax[x<<1|1]);}void update(int pos,int key,int l,int r,int x){ if(l==r) { smax[x]=key; return; } int m=(l+r)>>1; if(pos<=m)update(pos,key,left); if(pos>m)update(pos,key,right); smax[x]=max(smax[x<<1],smax[x<<1|1]);}int equery(int L,int R,int l,int r,int x){ if(L<=l&&r<=R)return smax[x]; int a=-1,b=-1,m=(l+r)>>1; if(L<=m)a=equery(L,R,left); if(R>m)b=equery(L,R,right); return max(a,b);}int main(){ char ord[3]; int n,q; while(~scanf("%d%d",&n,&q)) { build(1,n,1); while(q--) { int a,b; scanf("%s",ord); if(strcmp(ord,"Q")==0) { scanf("%d%d",&a,&b); printf("%d\n",equery(a,b,1,n,1)); } else { scanf("%d%d",&a,&b); update(a,b,1,n,1); } } } return 0;}
- hdu 1754 线段树 单点更新 水
- hdu 1754线段树单点更新
- HDU--1754(线段树,单点更新)
- hdu 1754 线段树入门 单点更新
- HDU 1754 线段树(单点更新)
- hdu 1754 线段树单点更新求最值
- HDU 1754 I Hate It [线段树-单点更新]
- Hdu-1754 I hate it【线段树(单点更新)】
- hdu 1754 Minimum Inversion Number 线段树 单点更新
- hdu 1754 I Hate It(线段树,单点更新)
- hdu 1754 I Hate It 线段树 单点更新
- HDU 1754 线段树单点更新求最大值
- HDU 1754 - I Hate It (线段树 单点更新)
- hdu 1754 I Hate It 线段树单点更新
- HDU 1754 I Hate It //线段树单点更新
- 线段树(单点更新) 之 hdu 1754
- hdu 1754 I Hate It 线段树单点更新
- hdu 1754 I Hate It(线段树+单点更新)
- 深入JVM系列(二)之GC机制、收集器与GC调优
- java 集合架构--[Collection] [List] [Set] [Map] [集合工具类]
- 总结这些年做程序员的心得和体会
- 构造与析构
- Erlang递归的性能问题:写出正确的尾递归代码
- hdu 1754 线段树 单点更新 水
- C++ 指针 (数组和指针)
- 选择排序
- ARM模拟器——SkyEye的使用
- C++中const用法总结
- hdu 1754 Minimum Inversion Number 线段树 单点更新
- 散记-static
- 运行 FreeSWITCH
- OSCHINA答读者问之六:杂谈(完结篇)