HDU-1754 I Hate It(线段树)
时间:2022-05-11
本文章向大家介绍HDU-1754 I Hate It(线段树),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
阿里云-云翼计划礼上加礼#——买六个月送域名代金券!
I Hate It
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 55851 Accepted Submission(s): 21792
Problem Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
Input 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int c[4000001];
int n,m;
char a;
int x,y;
int max(int x,int y)
{
return x>y?x:y;
}
void PushUp(int node)
{
c[node]=max(c[node<<1],c[node<<1|1]);
}
void build(int node,int begin,int end)
{
if(begin==end)
{
scanf("%d",&c[node]);
return;
}
int m=(begin+end)>>1;
build(node<<1,begin,m);
build(node<<1|1,m+1,end);
PushUp(node);
}
void Update(int node,int begin,int end,int ind,int num)
{
if(begin==end)
{
c[node]=num;
return;
}
int m=(begin+end)>>1;
if(ind<=m)
Update(node<<1,begin,m,ind,num);
else
Update(node<<1|1,m+1,end,ind,num);
PushUp(node);
}
int Query(int node,int begin,int end,int left,int right)
{
if(left<=begin&&end<=right)
return c[node];
int m=(begin+end)>>1;
int ret=0;
if(left<=m)
ret=max(ret,Query(node<<1,begin,m,left,right));
if(right>m)
ret=max(ret,Query(node<<1|1,m+1,end,left,right));
return ret;
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
build(1,1,n);
for(int i=0;i<m;i++)
{
getchar();
scanf("%c",&a);
scanf("%d%d",&x,&y);
if(a=='Q')
{
printf("%dn",Query(1,1,n,x,y));
}
else
{
Update(1,1,n,x,y);
}
}
}
return 0;
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Docker镜像与容器的常用操作
- DiDi Kafka-Manager安装和简单使用
- Docker数据管理与挂载管理
- Docker Dockerfile 指令详解与实战案例
- flume kafka和sparkstreaming整合
- Docker如何搭建私有registry镜像仓库
- Harbor介绍与企业级私有Docker镜像仓库搭建
- 如何查看docker run启动参数命令
- YAML 语言教程与使用案例
- 计算等压面要素场的基本检验指标
- Kubernetes K8S之SSL证书有效期修改
- Kubernetes K8S之通过yaml文件创建Pod与Pod常用字段详解
- Kubernetes K8S之kubectl命令详解及常用示例
- Kubernetes K8S之Pod 生命周期与init container初始化容器详解
- Kubernetes K8S之Pod生命周期与探针检测