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 ...
随机推荐
- Beta版软件说明书
软件使用说明书 一. 软件概述 本软件面向广大简易图片使用者,旨在为用户提供简单方便的不对其他软件产生依赖的截图软件,可以脱机使用. 二. 运行环境 个人电脑,Windows7操作系统,. ...
- js+CSS实现模拟华丽的select控件下拉菜单效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WARNING: Calls to any function that may require a gradient calculation inside a conditional block may return undefined results
GLES2.0: Some device will give a warning on compling shaders(yet the compling will succeed), and the ...
- Solr Schema.xml和solrconfig.xml分析(转)
Solr Schema.xml和solrconfig.xml分析 (http://yinwufeng.iteye.com/blog/964040) 一.字段配置(schema) schema.xml位 ...
- 手写PE文件(二)
[文章标题]: 纯手工编写的PE可执行程序 [文章作者]: Kinney [作者邮箱]: mohen_ng@sina.cn [下载地址]: 自己搜索下载 [使用工具]: C32 [操作平台]: win ...
- jboss 占用cpu 100%
通过Java thread dump分析找到耗费CPU最高的源代码 分类: 9. Java2010-04-11 23:06 9272人阅读 评论(4) 收藏 举报 threadjavaeclipse插 ...
- https://google-developers.appspot.com/chart/
https://google-developers.appspot.com/chart/
- Codeigniter 利用加密Key(密钥)的对象注入漏洞
http://drops.wooyun.org/papers/1449 原文链接:http://www.mehmetince.net/codeigniter-object-injection-vuln ...
- POJ 1870 Bee Breeding(找规律)
题目链接 题意 : 给你一个蜂巢状图形,让你找出两个点之间的距离. 思路 : 在做这个题之前可以看一下2265,因为是一种题来着,规律就是我在2265里写的那样,然后就是求距离了,求距离的时候只需考虑 ...
- ListView中EditText的数据加载错乱的问题
我在ListView中用BaseAdapter的getView()方法加载适配器,每个Item里有一个TextView和一个EditText,当我在第一个EditText里面输入数据,比如1234时, ...