ccnu-线段树联系-单点更新2-B
代码如下:
#include<iostream>
#include<string>
#include<cstdio> #define Max 200005
#define INF -1
using namespace std;
struct BTm
{
int elem;
int r;
int l;
}; BTm an[Max<<3];
int stu[Max];
int max(int a,int b)
{
return a>b?a:b;
}
void init(int i,int j, int k)
{
an[k].r = j;
an[k].l = i;
if(i == j)
{
an[k].elem = stu[i];
// printf("z\n");
return ;
}
int m=(i+j)>>1;
init(i,m,k<<1);
init(m+1,j,k<<1|1);
an[k].elem = max(an[k<<1].elem , an[k<<1|1].elem); } void update(int index,int change,int k)
{
int r,l;
r = an[k].r;
l = an[k].l;
if(r == l) {an[k].elem = change; return ;}
int m = (r+l)>>1; if(index <= m)
update(index,change,k<<1);
else
update(index,change,k<<1|1);
an[k].elem = max(an[k<<1].elem ,an[k<<1|1].elem);
}
int query(int lstu,int rstu,int k)
{
int l = an[k].l;
int r = an[k].r;
if(lstu == l&&rstu == r)
{
return an[k].elem;
}
int ans = -1;
int m = (l + r)>>1;
if(rstu <= m)
{
ans = max(query(lstu,rstu,k<<1),ans);
}
else if(m < lstu)
{
ans = max(query(lstu,rstu,k<<1|1),ans);
}
else
{
ans = max(ans,max(query(lstu,m,k<<1),query(m+1,rstu,k<<1|1)));
}
return ans;
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m) != EOF)
{
for(int i = 1; i <= n; i++)
scanf("%d",&stu[i]);
init(1,n,1);
while(m--)
{
string s;
cin>>s;
if(s == "Q")
{
int A,B;
scanf("%d%d",&A,&B);
printf("%d\n",query(A,B,1));
}
else
{
int A,B;
scanf("%d%d",&A,&B);
update(A,B,1);
}
} }
return 0;
}
【位运算符一定是可耐的男孩纸!*^*】
ccnu-线段树联系-单点更新2-B的更多相关文章
- hdu1754线段树的单点更新区间查询
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
http://acm.hdu.edu.cn/showproblem.php?pid=5475 An easy problem Time Limit: 8000/5000 MS (Java/Others ...
- 线段树(单点更新)HDU1166、HDU1742
在上一篇博文里面,我提到了我不会线段树,现在就努力地学习啊! 今天AC一题感觉都很累,可能是状态不佳,在做HDU1166这题目时候,RE了无数次. 原因是:我的宏定义写错了,我已经不是第一犯这种错误了 ...
- POJ 2892 Tunnel Warfare || HDU 1540(树状数组+二分 || 线段树的单点更新+区间查询)
点我看题目 题意 :N个村子连成一条线,相邻的村子都有直接的地道进行相连,不相连的都由地道间接相连,三个命令,D x,表示x村庄被摧毁,R ,表示最后被摧毁的村庄已经重建了,Q x表示,与x直接或间 ...
- HDU 1394 Minimum Inversion Number(线段树的单点更新)
点我看题目 题意 :给你一个数列,a1,a2,a3,a4.......an,然后可以求出逆序数,再把a1放到an后,可以得到一个新的逆序数,再把a2放到a1后边,,,,,,,依次下去,输出最小的那个逆 ...
- 线段树(单点更新and成段更新)
线段树需要的空间. 区间为1-->n 假设是一棵完全二叉树,且树高为i. 完全二叉树性质:第i层最多有2^(i-1)个结点. 那么 2^(i-1) = n; i = log2(n) + ...
- HDU 1754 I Hate It(线段树之单点更新 区间最值查询)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- POJ 3171.Cleaning Shifts-区间覆盖最小花费-dp+线段树优化(单点更新、区间查询最值)
Cleaning Shifts Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4721 Accepted: 1593 D ...
- Almost Regular Bracket Sequence CodeForces - 1095E (线段树,单点更新,区间查询维护括号序列)
Almost Regular Bracket Sequence CodeForces - 1095E You are given a bracket sequence ss consisting of ...
随机推荐
- cygwin chmod 失效
问题背景 为了在 Cygwin 下使用之前最喜爱的 screen 命令, 安装 Cygwin 时就选上了 screen 来运行一把 ganiks.liu@MAMIS-Gaiks-Liu /tmp $ ...
- HDU 5800 To My Girlfriend 背包
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5800 To My Girlfriend Time Limit: 2000/2000 MS (Java ...
- bzoj 3295 树套树
比较裸,可以有好多的优化,比如根本没有删除的点没有加在树套树中的必要,预处理 出来每个不会被删除的值可以减少不少时间,也可以写成树状数组套平衡树,都会快很多 /******************** ...
- SPOJ - DQUERY 主席树
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=32356 Given a sequence of n numbers ...
- 日志:slf4j+log4j+maven配置
代码的日志输出,前前后后折腾了我好几次. 本着会用,快速配置的原则,还是将配置过程记录下来,以便复用. 参考:http://blog.csdn.net/anialy/article/details/8 ...
- [工作积累] Google Play Game SDK details
https://developers.google.com/games/services/cpp/api/structgpg_1_1AndroidSupport For apps which targ ...
- 说说Thread.Sleep(0)的那些奇怪的事
写在前面 最近在弄一个传输组件,用到很多多线程的知识,其中有个问题,困扰我很久,不知道是什么原因,脑子一热,在传输过程中,添加了一句代码Thread.Sleep(0).那个问题竟然解决了,耗费我一上午 ...
- ios 获取n个月前或者n个月后的日期
NSCalendar *calendar = [NSCalendar currentCalendar]; NSRange range = [calendar rangeOfUnit:NSDayCale ...
- Mozilla推荐的CSS属性书写顺序及命名规则
传说中的Mozilla推荐 /* mozilla.org Base Styles * maintained by fantasai */ /* Suggested order: * display * ...
- 非阻塞式JavaScript脚本介绍
JavaScript 倾向于阻塞浏览器某些处理过程,如HTTP 请求和界面刷新,这是开发者面临的最显著的性能问题.保持JavaScript文件短小,并限制HTTP请求的数量,只是创建反应迅速的网页应用 ...