原题链接: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. Jmeter----函数助手参数化

    要填写开始日期和结束日期和赋值的变量名

  2. c#WinForm程序调用vsto动态库,已解决

    最近做一个vsto的项目,涉及到Form程序调用vsto动态库,弄了半天,搜了很多资料终于搞定了,把积累写下来备以后用.相关网址: https://stackoverflow.com/question ...

  3. 如何使用flow进行静态类型检查

    Flow 是 facebook 出品的 JavaScript 静态类型检查⼯具.Vue.js 的源码利⽤了 Flow 做了静态类型检查,所以了解 Flow 有助于我们阅读源码. 为什么⽤ Flow? ...

  4. soapui打开即报错------连接不上Internet

    1.遇到的问题: 打开soapui即报错,如下: You're getting this message since your computer is offline and SoapUI can't ...

  5. JS预解析与变量提升

    预解析 JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的.JavaScript解析器执行JavaScript代码的时候,分为两个过程:预解析过程和代码执行过程 预解析过程 ...

  6. Perl 标量

    Perl 标量 标量是一个简单的数据单元. 标量可以是一个整数,浮点数,字符,字符串,段落或者一个完整的网页. 以下实例演示了标量的简单应用: 实例 #!/usr/bin/perl $age = 20 ...

  7. System.Web.Mvc.JavaScriptResult.cs

    ylbtech-System.Web.Mvc.JavaScriptResult.cs 1.程序集 System.Web.Mvc, Version=5.2.3.0, Culture=neutral, P ...

  8. spss logistic回归分析结果如何分析

    spss logistic回归分析结果如何分析 如何用spss17.0进行二元和多元logistic回归分析 一.二元logistic回归分析 二元logistic回归分析的前提为因变量是可以转化为0 ...

  9. idea从github中pull或者push成功之后ssm项目全部controller报红色下划线的解决方案

    某次从github上pull下来之后,报出如下一堆红色波浪线错误 解决方法: 在随便一个红色波浪线处,按下alt+enter,点击add maven dependency, 选中所有,点击添加即可,此 ...

  10. AtCoder ABC 129E Sum Equals Xor

    题目链接:https://atcoder.jp/contests/abc129/tasks/abc129_e 题目大意 给定一个二进制表示的数 L,问有多少对自然数 (a, b) 满足 $a + b ...