I Hate It HDU - 1754 (线段树)

注意点:scanf中使用%c时,会读取空格和回车,所以在%c之前要有一个空格 ( 或者直接使用%s也行,%s会忽略空格和回车 )。具体见下面的代码:
#include<iostream>
#include<vector>
#include<string>
#include<cmath>
#include<set>
#include<algorithm>
#include<cstdio>
#include<map>
#include<cstring>
#include<list> #define MAXSIZE 200010 using namespace std; int N, M;
int tree[*MAXSIZE];
int ans = -; void init()
{
memset(tree, , sizeof(tree));
} void build(int node, int l, int r)
{
if(l == r)
{
scanf("%d", &tree[node]);
return;
}
int mid = (l+r)/;
build(node*, l, mid);
build(node*+, mid+, r); tree[node] = max(tree[node*], tree[node*+]);
} // 单点更新
void update(int node, int l, int r, int index, int n)
{
if(l == r)
{
tree[node] = n;
return;
}
int mid = (l+r)/;
if(index <= mid)
update(node*, l, mid, index, n);
else
update(node*+, mid+, r, index, n); tree[node] = max(tree[node*], tree[node*+]);
} // 区间查询
int query_range(int node, int l, int r, int L, int R)
{
if(l <= L && r >= R)
return tree[node];
int mid = (L+R)/;
if(l <= mid)
ans = max(ans, query_range(node*, l, r, L, mid));
if(mid < r)
ans = max(ans, query_range(node*+, l, r, mid+, R)); return ans;
} int main()
{
while(scanf("%d%d", &N, &M) != EOF)
{
init();
build(,,N);
for(int j = ; j < M; ++j)
{
char c;
int a, b;
scanf(" %c%d%d", &c, &a, &b); // scanf中%c会读取空格和回车,所以在%c前面加一个空格
if(c == 'Q')
{
printf("%d\n", query_range(, a, b, , N));
ans = -;
}
else if(c == 'U')
update(, , N, a, b);
}
} return ;
}
I Hate It HDU - 1754 (线段树)的更多相关文章
- hdu 1754 线段树(Max+单点修改)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU(1754),线段树,单点替换,区间最值
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 线段树模板题,update功能是单点替换,query是访问区间最大值. #include < ...
- hdu 1754 线段树入门
线段树点修改 区间最大值查询 #include <cstdio> #include <cstdlib> #include <cmath> #include < ...
- HDU 1754 线段树 单点跟新 HDU 1166 敌兵布阵 线段树 区间求和
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- HDU 1754 线段树入门解题报告
---恢复内容开始--- 题意:给定区间,每个人的成绩, Q次询问,求每次询问区间中的最大值 思路:构造线段树 代码: #include<stdio.h> #include<algo ...
- HDU - 1754 线段树-单点修改+询问区间最大值
这个也是线段树的经验问题,待修改的,动态询问区间的最大值,只需要每次更新的时候,去把利用子节点的信息进行修改即可以. 注意更新的时候区间的选择,需要对区间进行二分. #include<iostr ...
- hdu 1754 线段树(单点替换 区间最值)
Sample Input5 61 2 3 4 5Q 1 5 //1-5结点的最大值U 3 6 //将点3的数值换成6Q 3 4Q 4 5U 2 9Q 1 5 Sample Output5659 # i ...
- HDU 1754线段树基本操作,建树,更新,查询
代码线段树入门整理中有介绍. #include<cstdio> #include<algorithm> #include<cstring> #include< ...
- HDU 1754线段树
第一个自己动手写的线段树,1Y还是有点小激动哈(虽然是模版题) 1 #include<cstdio> 2 #include<cstring> 3 #include<alg ...
- hdu 1754 线段树模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 #include <cstdio> #include <cmath> # ...
随机推荐
- /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crt1.o:在函数‘_start’中: (.text+0x20):对‘main’未定义的引用
原因是新建了一个可执行的函数,里面却没有main函数,加上main函数即可
- Vue.js项目部署到服务器
1.申请服务器 2.配置Xshell 3.在服务器手动建自己的根目录,把根目录的文件名复制给项目里面config下面的index.js 4.项目开始打包 npm run build 5.打包完成之后把 ...
- NYOJ--860 又见01背包(01背包)
题目http://acm.nyist.net/JudgeOnline/problem.php?pid=860 分析:题目和普通的01背包问题一样,但是唯一不同的是数据的特殊性. 如果10^9根本就开辟 ...
- wpf中数据绑定和INotifyPeropertyChanged的理解
原创:转载请注明出处. 先说数据绑定: XAML代码: <Window x:Class="数据绑定和INotifyPropertyChanged.Window1" Loade ...
- JSON对象获取指定元素以及JSON.parse() 与 JSON.stringify() 的区别
利用 JSON.parse(param) 实现 例: var param = { "name" : "张三", "text" : { &qu ...
- AIO异步非阻塞学习
Client:客户端 package aio; import java.io.UnsupportedEncodingException; import java.net.InetSocketAddre ...
- PostgreSQL DISTINCT ON
https://stackoverflow.com/questions/3800551/select-first-row-in-each-group-by-group select DISTINCT ...
- 2019-8-31-dotnet-通过-WMI-获取系统安装的驱动
title author date CreateTime categories dotnet 通过 WMI 获取系统安装的驱动 lindexi 2019-08-31 16:55:59 +0800 20 ...
- vue-admin-template模板添加tagsview
参考: https://github.com/PanJiaChen/vue-admin-template/issues/349 一.从vue-element-admin复制文件: vue-admin- ...
- Mahout In Action-第一章:初识Mahout
1. 初识Mahout 本章涵盖以下内容: Apache Mahout是什么? 现实中推荐系统引擎.聚类.分类概述 配置mahout 读者可能从本书的标题中猜测到,本书是一本讲解如何将mahout应用 ...