hdu 1754 I Hate It(线段树入门-单点更新)
来源:互联网 发布:苹果软件中文字体 编辑:程序博客网 时间:2024/05/02 02:25
这让很多学生很反感。
不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。
在每个测试的第一行,有两个正整数 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。
5 61 2 3 4 5Q 1 5U 3 6Q 3 4Q 4 5U 2 9Q 1 5
5659HintHuge input,the C function scanf() will work better than cin
-
#include <iostream>
#include <stdio.h>
using namespace std;
#define maxn 200001
int Max[3*maxn];
void Build(int L,int R,int root)
{
if(L==R)
{
scanf("%d",&Max[root]);
return;
}
int m=(L+R)>>1;
Build(L, m, root<<1);
Build(m+1, R, (root<<1)+1);
Max[root]=max(Max[root<<1],Max[(root<<1)+1]);
}
void Update(int L,int R,int root,int pos,int val) //在区间L~R中修改pos位置上的数据为val
{
if(L==R) //更新点
{
Max[root]=val;
return;
}
int m=(L+R)>>1;
if(pos<=m)
Update(L, m, root<<1, pos, val);
else
Update(m+1, R, (root<<1)+1, pos, val);
Max[root]=max(Max[root<<1],Max[(root<<1)+1]);//更新父区间
}
int Query(int ql,int qr,int root,int L,int R)//在区间L~R中查询ql~qr区间
{
if(L>=ql && qr>=R)
return Max[root];
int m=(L+R)>>1;
int ans=0;
if(ql<=m)//在该树左子树上有部分区间
ans=max(ans,Query(ql, qr, root<<1, L, m));
if(qr>m)//在该树右子树上有部分区间
ans=max(ans,Query(ql, qr, (root<<1)+1, m+1, R));
return ans;
}
int main ()
{
char c ;
int x, y,n,m;
while (scanf ("%d%d", &n, &m) !=EOF)
{
Build (1, n,1) ;
for (int i =1 ; i <= m ; ++i)
{
getchar();
scanf ("%c%d%d", &c, &x, &y) ;
if (c == 'Q')
printf ("%d\n",Query (x,y ,1,1,n)) ;
else
Update (1,n,1, x, y) ;
}
}
return 0 ;
}
- hdu 1754 I Hate It(线段树入门-单点更新)
- HDU 1754 I Hate It [线段树-单点更新]
- Hdu-1754 I hate it【线段树(单点更新)】
- hdu 1754 I Hate It(线段树,单点更新)
- hdu 1754 I Hate It 线段树 单点更新
- HDU 1754 - I Hate It (线段树 单点更新)
- hdu 1754 I Hate It 线段树单点更新
- HDU 1754 I Hate It //线段树单点更新
- hdu 1754 I Hate It 线段树单点更新
- hdu 1754 I Hate It(线段树+单点更新)
- HDU 1754 I Hate It (线段树单点更新)
- HDU 1754 I Hate It 线段树单点更新
- 线段树单点更新 hdu 1754 I Hate It
- hdu 1754 I hate it(线段树单点更新)
- hdu 1754 I Hate It 线段树单点更新
- hdu 1754 I Hate It(线段树单点更新)
- HDU 1754 I Hate It(线段树单点更新)
- HDU 1754 I Hate It(线段树单点更新)
- Chinese Remainder Theorem
- MVC与三层架构区别
- HashMap为什么是线程不安全的?
- unindent does not match any outer
- dwr学习1
- hdu 1754 I Hate It(线段树入门-单点更新)
- Leetcode(8):String to Integer (atoi)
- 谈C#中的Delegate
- LeetCode_Partition List
- 网页简单文件下载
- C++课程学习简单总结
- PAT(Advance) 1089. Insert or Merge (25)
- 从零开始打造一个新闻订阅APP之服务器篇(二、类时间片轮转算法+redis sorted set 实现“逛”功能)
- SQL循环语句