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 ...
随机推荐
- How to find and fix Bash Shell-shock vulnerability CVE-2014-6271 in unix like system
type command - env x='() { :;}; echo vulnerable' bash -c 'echo hello' in your terminal. if your sy ...
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) C - Bear and Colors
题目链接: http://codeforces.com/contest/673/problem/C 题解: 枚举所有的区间,维护一下每种颜色出现的次数,记录一下出现最多且最小的就可以了. 暴力n*n. ...
- 【BZOJ】【1025】【SCOI2009】游戏
DP/整数拆分 整个映射关系可以分解成几个循环(置换群的预备知识?),那么总行数就等于各个循环长度的最小公倍数+1(因为有个第一行的1~N).那么有多少种可能的排数就等于问有多少种可能的最小公倍数. ...
- 【BZOJ】【1017】【JSOI2008】魔兽地图Dotr
树形DP 一开始想:f[i][j]表示以 i 为根的子树,花 j 块钱能得到的最高力量值,结果发现转移的时候没法保证叶子结点的数量限制TAT 只好去膜拜题解了……在这里贴两篇泛型背包的文章吧:< ...
- 【BZOJ】【2565】最长双回文串
Manacher算法 找出一个最长子串S=X+Y,且X和Y都是回文串,求最长的长度是多少…… 同时找两个串明显很难搞啊……但是我们可以先找到所有的回文串!在找回文串的同时我们可以预处理出来l[i]和r ...
- 使用开关、分段控件和web视图
#import "XViewController.h" @interface XViewController () @end @implementation XViewContro ...
- WinHex分析PE格式(1)
最近在一直努力学习破解,但是发现我的基础太差了,就想学习一下PE结构.可是PE结构里的结构关系太复杂,看这老罗的WiN32汇编最后一章 翻两页又合上了..把自己的信心都搞没了.感觉自己的理解能力不行, ...
- 扫描二维码跳转app
1.判断是否安装了app <html> <head> <meta name="viewport" content="width=device ...
- YARN应用程序的开发步骤
开发基于YARN的应用程序需要开发客户端程序和AppMaster程序: 我们基于程序自带的例子来实现提交application 到YARN的ResourceManger. Distributed Sh ...
- php弱类型
此处写ctf中遇到的==和md5值为0e**的应用. 数组和字符的=== ==