hdu 1754 I Hate It(线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754

I Hate It

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 45334    Accepted Submission(s): 17789


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

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

 

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
题目大意:就是很简单,线段树三大基本函数,建树,更新树,查找树。
详见代码。
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 struct node
 8 {
 9     int l,r;
10     int score;
11 } s[200000*4+10];
12 
13 void InitTree(int l,int r,int k)
14 {
15     s[k].l=l;
16     s[k].r=r;
17     s[k].score=0;
18     if (l==r)
19         return ;
20     int mid=(l+r)/2;
21     InitTree(l,mid,k*2);
22     InitTree(mid+1,r,2*k+1);
23 }
24 
25 
26 void UpdataTree(int i,int ad,int k)
27 {
28     if (s[k].l==s[k].r&&s[k].r==i)
29     {
30         s[k].score=ad;
31         return ;
32     }
33     int mid=(s[k].l+s[k].r)/2;
34     if (i<=mid)
35     {
36         UpdataTree(i,ad,k*2);
37     }
38     else if (i>mid)
39     {
40         UpdataTree(i,ad,k*2+1);
41     }
42     s[k].score=s[k*2].score>s[k*2+1].score?s[k*2].score:s[k*2+1].score;
43 }
44 
45 int sum;
46 
47 int SearchTree(int st,int e,int k)
48 {
49     if (st==s[k].l&&e==s[k].r)
50     {
51         return s[k].score;
52     }
53     int mid=(s[k].l+s[k].r)/2;
54     if (e<=mid)
55         return SearchTree(st,e,k*2);
56     else if (st>mid)
57         return SearchTree(st,e,k*2+1);
58     else
59     {
60         int a=SearchTree(st,mid,2*k);
61         int b=SearchTree(mid+1,e,2*k+1);
62         return a>b?a:b;
63     }
64 }
65 
66 int main ()
67 {
68     int n,m,a,x,y,ans;
69     char ch;
70     while (~scanf("%d%d",&n,&m))
71     {
72         sum=0;
73         InitTree(1,n,1);
74         for (int i=1; i<=n; i++)
75         {
76             scanf("%d",&a);
77             UpdataTree(i,a,1);
78         }
79         for (int i=1; i<=m; i++)
80         {
81             getchar();
82             scanf("%c",&ch);
83             if (ch=='Q')
84             {
85                 scanf("%d%d",&x,&y);
86                 ans=SearchTree(x,y,1);
87                 printf ("%d\n",ans);
88             }
89             else if (ch=='U')
90             {
91                 scanf("%d%d",&x,&y);
92                 UpdataTree(x,y,1);
93             }
94         }
95     }
96     return 0;
97 }

 

转载于:https://www.cnblogs.com/qq-star/p/4437410.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/406024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java numa_Java只使用2个CPU中的1个和NUMA(Neo4J)

我正在研究一个java程序来创建一个非常大的Neo4J数据库.我使用batchinserter和Executors.newFixedThreadPool来加快速度.我的Win2012R2服务器有2个cpu(26核心26超线程)和256GB NUMA架构.我的问题是,我的导入器只使用1个CPU(节点).是否有可能只使用一个javaprocess的NUMA节点&am…

cisco 交换机vlan-trunk的配置详解及应用实例:

虚拟局域网&#xff08;vlan&#xff09;&#xff1a;主要是为了分割广播域注&#xff1a;不同vlan之间不能相互通信。trunk&#xff1a;主要是为了不同交换机的相同vlan相互通信配置静态VLAN的步骤:************************************1.创建VLAN1)VLAN数据库配置模式:Switc…

java 登录拦截器_springMVC 拦截器-用户登录拦截实战

各位小伙伴咱们继续学习新知识今天要分享的就是拦截器不知道小伙伴们平时上网的时候有没有注意到,尤其是上网购物的时候,不登录账号,就无法访问一些功能页面,比如你不登录账号,就没法查看购物车里面有什么物品.这就是拦截器起到的作用.那么今天我们就来给之前的项目添加一个拦截…

vim匹配特定的行并删除它

From:http://robinfei.blog.sohu.com/111990727.html 删除包含特定字符的行&#xff1a; g/pattern/d 删除不包含指定字符的行&#xff1a; v/pattern/d g!/pattern/d 现实TAB键以及空格等&#xff1a; set list! 删除指定的行&#xff1a; :x,.d #从&#xff58;行…

React开发(171):处理删除与批量删除操作

//处理删除操作handleDelete (id, isBatch) > {if (isBatch && id.length 0) return message.warn(请勾选好友助力);}; 两个参数控制全选和非全选 nice 秒呀

java中异常+连接重置_是什么导致我的java.nett.ocketException:连接重置?

是什么导致我的java.nett.ocketException&#xff1a;连接重置&#xff1f;我们看到了频繁但断断续续的情况。java.net.SocketException: Connection reset我们日志中的错误。我们不确定Connection reset错误实际上来自&#xff0c;以及如何进行调试。这个问题似乎与我们试图发…

ubuntu下查看进程端口

ubuntu下查看进程端口 关键字: linux ubuntu # 查看所有打开的端口及服务名&#xff08;注意这里显示的服务名只是标准端口对应的服务名&#xff0c;可能并不准确&#xff09; nmap localhost # 查看哪些进程打开了指定端口port&#xff08;对于守护进程必须以root用户执行才能…

gzip和gunzip 解压参数

From:http://www.jb51.net/LINUXjishu/11041.html 点评&#xff1a;Linux压缩保留源文件的方法&#xff1a; gzip –c filename > filename.gz Linux解压缩保留源文件的方法&#xff1a; gunzip –c filename.gz > filename gunzip的用法 1.作用 gunzip命令作用是解压文…

React开发(172):React引入背景图片

import React, { Component } from react; import img1 from /assets/1.jpg;

Java游戏聊斋聂小倩_《聊斋倩女幽魂》聂小倩教你赢得战斗

即将由国内最大体感游戏平台——17Vee(亿旗体感)推出的3D单机体感游戏《聊斋之倩女幽魂》因其独特的战斗模式而备受关注。下面&#xff0c;就由《倩女幽魂》的女主角聂小倩来带大家亲身体验一把全新的体感战斗模式。第一步&#xff0c;当然是熟悉体感操作。在第一场战斗前&…

77种互联网盈利创新模式(3)

三&#xff0e;网上销售 11&#xff0e; 电子商务的新贵 《时代》选中亚马逊的CEO贝索斯做风云人物&#xff0c;绝对名副其实。对亚马逊研究越深&#xff0c;越觉得它确实在各方面都具有王者风范。 有1560万种理由认为亚马逊是电子商务之王。这个1560万&#xff0c;正是亚马逊的…

python向服务器请求压缩数据及解压缩数据

向服务器请求压缩数据格式&#xff0c;并解压缩数据 #!/usr/bin/env python # encodingutf-8import urllib2, httplibdef writeFile(fname, data):f open(fname, "w")f.write(data)f.close()if __name__ __main__:httplib.HTTPConnection.debuglevel 1request ur…

LINUX PAM验证机制

一.PAM简介 Linux-PAM(linux可插入认证模块)是一套共享库,使本地系统管理员可以随意选择程序的认证方式.换句话说,不用(重新编写和)重新编译一个包含PAM功能的应用程序,就可以改变它使用的认证机制.这种方式下,就算升级本地认证机制,也不用修改程序.PAM使用配置文件/etc/pam.co…

java和node.js 2018_node.js在2018年能继续火起来吗?我们来看看node.js的待遇情况

你知道node.js是怎么火起来的吗&#xff1f;你知道node.js现在的平均工资是多少吗&#xff1f;你知道node.js在2018年还能继续火吗&#xff1f;都不知道&#xff1f;那就来看文章吧&#xff0c;多学点node.js&#xff0c;说不定以后的你工资就会高于nodejs的平均工资了&#xf…

hdu 2110 基础母函数

题意&#xff1a;退出本身并不麻烦&#xff0c;麻烦的是&#xff0c;退出的人需要取走相应比例&#xff08;1/3&#xff09;金额的资产。假设公司此时一共有n种价值的资产&#xff0c;每种价值的资产数量已知&#xff0c;请帮助心烦意乱的XHD夫妇计算一共有多少种分割资产的方法…

Python SIP使用总结(WinLinux通用)

From: http://topic.csdn.net/u/20120324/22/cd8796f8-c601-492c-992d-3d70d58ba51b.html?07033688857013248#replyachor 本文原先发表与我的博客。这是我做图像处理的时候摸索到的&#xff0c;现分享给大家。在用PythonOpenCV做影像分割、识别以及变换检测时&#xff0c;有…

java quartz 2.2.3_java – Spring 3 Quartz 2错误

当我用Quartz 2使用Spring 3时&#xff0c;我收到以下错误。有人知道原因吗&#xff1f;错误&#xff1a;Exception in thread "main" org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quart…