原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754

线段树的模板题,详细的都写在代码里了

//不知道为什么定义单个字符,用%c输入会超时,换成字符数组和%s就过了

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
#include <cmath>
#define ll long long
#define pi 3.1415927
using namespace std;
int tree[],num[];
void build(int i ,int j, int k)
{
//建树,将1-n 2分分配给子节点,最后在给最终的节点赋值
if(j==k)
{
tree[i]=num[j];
return ;
}
int mid =(j+k)>>;
build(i<<,j,mid);
build(i<<|,mid+,k);
tree[i]=max(tree[i<<],tree[i<<|]);
}
void add(int i,int x, int j ,int k,int p)
{
//维护 从头寻找要改变的节点,找到后再依次返回父节点进行维护
if (j==k)
{
tree[i]=p;
return ;
}
int mid =(j+k)>>;
if(x<=mid)
add(i<<,x,j,mid,p);
else
add(i<<|,x,mid+,k,p);
tree[i]=max(tree[i<<],tree[i<<|]);
}
int finds(int i,int x, int y, int j, int k)
{
//查询 寻找符合要求的节点
if(x<=j && y>=k)
return tree[i];
int mid=(j+k)>>;
if(y<=mid)
return finds(i<<,x,y,j,mid);
else if(x>mid)
return finds(i<<|,x,y,mid+,k);
else
return max(finds(i<<,x,y,j,mid),finds(i<<|,x,y,mid+,k));
}
int main ()
{
int n,m,i,t,j,k,x,y;
char str[]; //这里不用字符数组不知道为什么莫名其妙的超时
while(scanf("%d %d",&n,&m)!=EOF)
{
for(i=;i<=n;++i)
scanf("%d",&num[i]);
build(,,n);
while(m--)
{
scanf("%s %d %d",str,&x,&y);
if(str[]=='Q'){
t=finds(,x,y,,n);
printf("%d\n",t);
}
else if (str[]=='U')
add(,x,,n,y);
}
}
return ;
}

hdu 1754 I Hate It (线段树)的更多相关文章

  1. hdu 1754 I Hate It 线段树 点改动

    // hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...

  2. HDU 1754 I Hate It(线段树之单点更新,区间最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. HDU 1754 I Hate It 线段树RMQ

    I Hate It Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=175 ...

  4. HDU 1754 I Hate It 线段树单点更新求最大值

    题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...

  5. HDU 1754 I Hate It(线段树单点替换+区间最值)

    I Hate It [题目链接]I Hate It [题目类型]线段树单点替换+区间最值 &题意: 本题目包含多组测试,请处理到文件结束. 在每个测试的第一行,有两个正整数 N 和 M ( 0 ...

  6. HDU 1754 I Hate It (线段树)

    题意:略. 析:裸的线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include < ...

  7. HDU 1754 I Hate It(线段树区间查询,单点更新)

    描述 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老 ...

  8. HDU 1754 I Hate It (线段树)

    题目链接 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老 ...

  9. hdu 1754 I Hate It 线段树基础题

    Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...

  10. hdu 1754 I Hate It(线段树水题)

    >>点击进入原题测试<< 思路:线段树水题,可以手敲 #include<string> #include<iostream> #include<a ...

随机推荐

  1. Oracle学习01-Oracle的基本查询和过滤排序

  2. 10个CSS简写技巧

    CSS简写就是指将多行的CSS属性声明化成一行,又称为css代码优化.CSS简写的最大好处就是能够显著减少CSS文件的大小,其实还有很多其他益处.臃肿而杂乱的CSS样式表会使你遇到问题是难以调试.尤其 ...

  3. ES6 学习 -- 字符串模板

    ES5及以前,动态操作dom结构时,要多个字符串和变量拼接,如果不换行处理,则需要写很长的代码,不利于阅读理解,如果进行换行写入,则需要一堆的"+"号来连接文本与变量,写起来非常麻 ...

  4. Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)

    简单介绍一下,本框架的基本功能点: Spring:整个框架的主体部分,这个自不用说. SpringMVC:MVC部分我还是比较喜欢Spring的. MyBatis:选型的时候选择这个ORM主要也是考虑 ...

  5. go 数据类型和操作符

    文件名&关键字&标识符 1. 所有go源码以 .go结尾 2. 标识符以字母或者下划线开头,大小写敏感:add, Add, _add _是特殊标识符,用来忽略结果 3. 保留关键字 G ...

  6. indexof方法区分大小写

    1)全部转换为大写:str.toUpperCase().IndexOf(s.toUpperCase()) 2)全部转换为小写:str.toLowerCase().IndexOf(s.toLowerCa ...

  7. Linux 指令查询帮助

    man +指令名 例子: man rename

  8. Java Collection - 遍历map的几种方式

    作者:zhaoguhong(赵孤鸿) 出处:http://www.cnblogs.com/zhaoguhong/ 本文版权归作者和博客园共有,转载请注明出处 ---------------- 总结 如 ...

  9. kaptcha 实现验证码

    依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha< ...

  10. js 过滤非法字符

    demo = 'zhang#@$san'; reg=/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im; if(reg.test(demo)){ t ...