hdu 1754 I Hate It (线段树)
原题链接: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 (线段树)的更多相关文章
- hdu 1754 I Hate It 线段树 点改动
// hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...
- HDU 1754 I Hate It(线段树之单点更新,区间最值)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 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 ...
- HDU 1754 I Hate It 线段树单点更新求最大值
题目链接 线段树入门题,线段树单点更新求最大值问题. #include <iostream> #include <cstdio> #include <cmath> ...
- HDU 1754 I Hate It(线段树单点替换+区间最值)
I Hate It [题目链接]I Hate It [题目类型]线段树单点替换+区间最值 &题意: 本题目包含多组测试,请处理到文件结束. 在每个测试的第一行,有两个正整数 N 和 M ( 0 ...
- HDU 1754 I Hate It (线段树)
题意:略. 析:裸的线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include < ...
- HDU 1754 I Hate It(线段树区间查询,单点更新)
描述 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感.不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问.当然,老 ...
- HDU 1754 I Hate It (线段树)
题目链接 Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老 ...
- hdu 1754 I Hate It 线段树基础题
Problem Description 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少. 这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求, ...
- hdu 1754 I Hate It(线段树水题)
>>点击进入原题测试<< 思路:线段树水题,可以手敲 #include<string> #include<iostream> #include<a ...
随机推荐
- [笔记]Android开发环境配置及HelloWorld程序
Android的开发须要下面四个工具: 1.JDK 2.Eclipse 3.Android SDK 4.ADT 具体功能: 1.JDK.JDK即Java Development Kit(Java开 ...
- 修改input标签placeholder文字颜色
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { /* WebKit browsers */ color: ...
- 3、docker 容器管理
Docker容器相对于OpenStack的云主机实例,虽然他们本质上不同.我们需要基于镜像来创建容器.容器是独立运行的一个或一组应用,以及它们的运行环境.对应的,虚拟机可以理解为模拟运行的一整套操作系 ...
- 【数论】[SDOI2010]古代猪文
大概就是求这个: $$G^\sum_{k|N} C_{n}^{k}$$ 显然只要把后面的$\sum_{k|N}C_{n}^{k}$求出来就好了 几个要用的定理: 欧拉定理的推论:(a和n互质) $$a ...
- 数据库MySQL--条件查询/排序查询
一.条件查询 条件查询:满足条件的字段被筛选出来 语法:select 查询列表字段 from 表名 where 筛选条件: 条件查询的条件分类: 1.按条件表达式筛选:条件运算符:>, < ...
- The Battle of Chibi
The Battle of Chibi 给出一段长度为n的序列\(\{a_i\}\),求其中长度为m的严格上升子序列个数\(mod\ 10^9+7\),\(n\leq 10^3\). 解 不难想到设\ ...
- 用while实现登录操作(3次过后,输入yes,使counter置0,还可以玩)
用while实现登录操作(输入yes,使counter置0,还可以玩)#_author:Administrator#date:2019/10/24user_name="star"p ...
- jdk配置到tomcat配置
1.jdk配置 首先下载jdk 这里我下载的是 jdk1.8 (jdk1.8.0_181\) 然后,安装 我的安装路径 C:\Program Files\Java\jdk1.8.0_181\ 我选择默 ...
- 自签https证书2(适配新版chrome,不会显示“不安全”)
上一篇博文中介绍了自签https的方法,但是在新版的chrome中会出现这么一个问题:自签ca可以识别,但是证书仍然会判断不安全.为了解决这个问题,博主特地又查了好多资料,终于找到了解决方案. 当然, ...
- Acess link