hdu 1754 Ihate it
Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
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
- #include<iostream>
- #include<stdio.h>
- #include<math.h>
- using namespace std;
- const int maxx = ;
- int tree[maxx<<];
- int a[maxx];
- int n;
- void build(int root,int l,int r)
- {
- //cout<<"root:"<<root<<" l,r:"<<l<<" "<<r<<endl;
- if(l==r)
- {
- tree[root]=a[l];
- }
- else
- {
- int mid=(l+r)>>;
- build(root<<,l,mid);
- build((root<<)+,mid+,r);
- tree[root]=max(tree[root<<],tree[(root<<)+]);
- }
- }
- void update(int root,int l,int r,int pos,int val)
- {
- if(pos==l&&pos==r)
- {
- tree[root]=val;
- return;
- }
- int mid=(l+r)>>;
- if(pos<=mid) update(root<<,l,mid,pos,val);
- else update((root<<)+,mid+,r,pos,val);
- tree[root]=max(tree[root<<],tree[(root<<)+]);
- }
- int query(int root,int l,int r,int ql,int qr)
- {
- //cout<<"root:"<<root<<" l,r:"<<l<<" "<<r<<" ql,qr "<<ql<<" "<<qr<<" tree[root] is :"<<tree[root]<<endl;
- if(l==ql&&qr==r)
- {
- return tree[root];
- }
- int mid=(l+r)>>;
- if(qr<=mid)
- {
- return query(root<<,l,mid,ql,qr);
- }
- else if(ql>mid)
- {
- return query((root<<)+,mid+,r,ql,qr);
- }
- else return max(query(root<<,l,mid,ql,mid),query((root<<)+,mid+,r,mid+,qr));
- }
- void print()
- {
- int j=,t=;
- for(int i=; i<=(n<<); i++)
- {
- j++;
- printf("%d ",tree[i]);
- if(j>pow(,(t-)))
- {
- printf("\n");
- j=;
- t++;
- }
- }
- printf("\n\n");
- }
- int main()
- {
- int m;
- while(~scanf("%d%d",&n,&m))
- {
- for(int i=; i<=n; i++)
- {
- scanf("%d",a+i);
- }
- build(,,n);
- char cmd;
- for(int i=; i<m; i++)
- {
- cin>>cmd;
- if(cmd=='U')
- {
- int tmp1,tmp2;
- scanf("%d%d",&tmp1,&tmp2);
- update(,,n,tmp1,tmp2);
- }
- else if(cmd=='Q')
- {
- int tmp1,tmp2;
- scanf("%d%d",&tmp1,&tmp2);
- int ans=query(,,n,tmp1,tmp2);
- printf("%d\n",ans);
- }
- }
- }
- return ;
- }
hdu 1754 Ihate it的更多相关文章
- hdu 1754 I Hate It (splay tree伸展树)
hdu 1754 I Hate It 其实我只是来存一下我的splay模板的..请大牛们多多指教 #include<stdio.h> #include<string.h> #i ...
- hdu 1754 线段树(Max+单点修改)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu 1754 I Hate It (线段树功能:单点更新和区间最值)
版权声明:本文为博主原创文章.未经博主同意不得转载.vasttian https://blog.csdn.net/u012860063/article/details/32982923 转载请注明出处 ...
- HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值)
HDOJ(HDU).1754 I Hate It (ST 单点替换 区间最大值) 点我挑战题目 题意分析 从题目中可以看出是大数据的输入,和大量询问.基本操作有: 1.Q(i,j)代表求区间max(a ...
- HDU 1754——I Hate It——————【线段树单点替换、区间求最大值】
I Hate It Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- 线段树(单点更新) HDU 1754 I Hate It
题目传送门 /* 线段树基本功能:区间最大值,修改某个值 */ #include <cstdio> #include <cstring> #include <algori ...
- hdu 1754 I Hate It 线段树 点改动
// hdu 1754 I Hate It 线段树 点改动 // // 不多说,裸的点改动 // // 继续练 #include <algorithm> #include <bits ...
- hdu 1754 I Hate It (模板线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=1754 I Hate It Time Limit: 9000/3000 MS (Java/Others) M ...
- hdu 1754 线段树模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 #include <cstdio> #include <cmath> # ...
随机推荐
- hadoop学习之一
Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储.Hadoop的框架最核心的设计 ...
- 使用多种方式实现遍历HashMap
今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable ...
- 关于showModalDialog()对话框点击按钮弹出新页面的问题
页面a.aspx上,单击按钮a,走脚本,弹出showModalDialog("b.aspx",....) 在b.aspx上有个服务器控件按钮b,单击按钮,更新数据后,会弹出一个新的 ...
- HNU 12826 Balloons Colors
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12826&courseid=268 #include&l ...
- MySQL目录
MySQL的学习总结目录 Mysql5.7安装及配置 教你如何3分钟玩转MYSQL MySQL使用详解--根据个人学习总结 Mysql增删改 Mysql_以案例为基准之查询 MySQL之扩展(触发器, ...
- spring boot实战(第十三篇)自动配置原理分析
前言 spring Boot中引入了自动配置,让开发者利用起来更加的简便.快捷,本篇讲利用RabbitMQ的自动配置为例讲分析下Spring Boot中的自动配置原理. 在上一篇末尾讲述了Spring ...
- iOS 使用interface builder 创建太复杂的constrains时容易产生crash
今天写程序,遇到了crash,在界面初始化时不会有,想切换到别的tab页就报错了.主要内容如下: Cannot find an outgoing row head for incoming head ...
- iOS 用protocol 和 用继承小体会
最近写程序时,2个类都有相同的函数,又因为在用oc,所以就用了protocol来实现.后来发现其实这2个类除了相同的函数,还需要一些相同的变量,当初用继承的话会更简单.
- 【动态规划】skiing_深度搜索_动态规划
问题 B: [动态规划]skiing 时间限制: 1 Sec 内存限制: 128 MB提交: 28 解决: 11[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪 ...
- poj 1611 The Suspects 解题报告
题目链接:http://poj.org/problem?id=1611 题意:给定n个人和m个群,接下来是m行,每行给出该群内的人数以及这些人所对应的编号.需要统计出跟编号0的人有直接或间接关系的人数 ...