Problem

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 

这让很多学生很反感。 

不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。


Input

本题目包含多组测试,请处理到文件结束。 

在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。 

学生ID编号分别从1编到N。 

第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。 

接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。 

当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。 

当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。


Output

对于每一次询问操作,在一行里面输出最高成绩。


Sample Input

5 6
1 2 3 4 5
Q 1 5
U 3 6
Q 3 4
Q 4 5
U 2 9
Q 1 5

Sample Output

5
6
5
9

Hint

Huge input,the C function scanf() will work better than cin

题解:线段树裸题。注意一下Hint,要用long long和读入的处理。

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int MAX = 200000;
struct node
{
int l, r;
int w;
};
struct node tree[MAX *4 + 1];
int ans = 0;
void BuildTree(int l, int r, int k)
{
tree[k].l = l;
tree[k].r = r;
if(l == r)
{
scanf("%d",&tree[k].w);
return ;
}
int m = (tree[k].l + tree[k].r) >> 1;
BuildTree(l, m,k << 1);
BuildTree(m + 1, r, k << 1 | 1);
tree[k].w = max(tree[k << 1].w, tree[k << 1 | 1].w);
}
void SingleModify(int k, int x, int y)
{
if(tree[k].l == tree[k].r)
{
tree[k].w = y;
return ;
}
int m = (tree[k].l + tree[k].r) / 2;
if(x <= m) SingleModify(k<<1,x,y);
else SingleModify(k<<1|1,x,y);
tree[k].w = max(tree[k<<1].w, tree[k<<1|1].w);
}
void IntervalQuery(int k, int x, int y)
{
if(tree[k].l >= x && tree[k].r <= y)
{
ans = max(ans,tree[k].w);
return ;
}
int m = (tree[k].l + tree[k].r) >>1;
if(x <= m) IntervalQuery(k<<1,x,y);
if(y > m) IntervalQuery(k <<1 |1,x, y);
}
char op;
int main()
{
int n, m,x,y;
while(~scanf("%d %d", &n, &m))
{
BuildTree(1,n,1);
while(m --)
{
getchar();
scanf("%c %d %d",&op, &x, &y);
if(op == 'Q')
{
ans = 0;
IntervalQuery(1,x,y);
printf("%d\n",ans);
}
else if(op =='U')
{
SingleModify(1,x,y);
}
}
}
return 0;
}

I Hate It (HDU 1754)的更多相关文章

  1. 裸裸的线段树(hdu 1754)

    线段树的第一发. 哪天忘了还能够让自己找找回顾. 线段树操作: build  : 建树. update:点改动: query:查询 Input 在每一个測试的第一行,有两个正整数 N 和 M ( 0& ...

  2. 2道acm编程题(2014):1.编写一个浏览器输入输出(hdu acm1088);2.encoding(hdu1020)

    //1088(参考博客:http://blog.csdn.net/libin56842/article/details/8950688)//1.编写一个浏览器输入输出(hdu acm1088)://思 ...

  3. Bestcoder13 1003.Find Sequence(hdu 5064) 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5064 题目意思:给出n个数:a1, a2, ..., an,然后需要从中找出一个最长的序列 b1, b ...

  4. 2013 多校联合 F Magic Ball Game (hdu 4605)

    http://acm.hdu.edu.cn/showproblem.php?pid=4605 Magic Ball Game Time Limit: 10000/5000 MS (Java/Other ...

  5. (多线程dp)Matrix (hdu 2686)

    http://acm.hdu.edu.cn/showproblem.php?pid=2686     Problem Description Yifenfei very like play a num ...

  6. War Chess (hdu 3345)

    http://acm.hdu.edu.cn/showproblem.php?pid=3345 Problem Description War chess is hh's favorite game:I ...

  7. 2012年长春网络赛(hdu命题)

    为迎接9月14号hdu命题的长春网络赛 ACM弱校的弱菜,苦逼的在机房(感谢有你)呻吟几声: 1.对于本次网络赛,本校一共6名正式队员,训练靠的是完全的自主学习意识 2.对于网络赛的群殴模式,想竞争现 ...

  8. BestCoder Round #69 (div.2) Baby Ming and Weight lifting(hdu 5610)

    Baby Ming and Weight lifting Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  9. BestCoder Round #68 (div.2) geometry(hdu 5605)

    geometry Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

随机推荐

  1. django静态文件配置和使用

    一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...

  2. Java非常好用的反射框架Reflections

    MAVEN 坐标 <dependency> <groupId>org.reflections</groupId> <artifactId>reflect ...

  3. 调用顺丰API实现电商专递下单和获取面单功能

    参考文章:https://www.cnblogs.com/zhangxiaoyong/p/8317229.html 顺丰需求文档: 链接:https://pan.baidu.com/s/16EEaph ...

  4. uni-app入门学习

    什么是 uni-app 1 uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS.Android.H5.小程序等多个平台. 官方的体验例子: 2 un ...

  5. JavaScript 和 Java 是完全不同的语言

    JavaScript 和 Java 是完全不同的语言这个是定论,两者是概念http://www.gzaos.com还是设计都不同. JavaScript 在 1995 年由 Brendan Eich ...

  6. 你所不知道的 Console

    1.凡人视角 打印字符串 代码: console.log("I am a 凡人"); 打印提示消息 代码: console.info("Yes, you arm a 凡人 ...

  7. 组件内或者vuex数据已变化但是页面显示或许不正常

    一.问题产生背景: 组件内的数据比较复杂,涉及多层次的数组和对象的情况下,某些值发生变化但是页面值没有变化:更新vuex的数据,同样在涉及多层次的数组和对象的情况下,某些值发生变化但是页面值没有变化: ...

  8. socket技术详解

    https://blog.csdn.net/weixin_39634961/article/details/80236161 socket编程是网络常用的编程,我们通过在网络中创建socket关键字来 ...

  9. 轻量级标记语言Asciidoc、Markdown

    Asciidoc简介 https://blog.csdn.net/u011411849/article/details/79031718 Asciidoc 比Markdown更简洁强大的文档工具 ht ...

  10. 阿里高级架构师教你如何使用Spring Cloud Ribbon重试请求

    在微服务调用中,一些微服务圈可能调用失败,通过再次调用以达到系统稳定性效果,本文展示如何使用Ribbon和Spring Retry进行请求再次重试调用. 在Spring Cloud中,使用load b ...