I Hate It

Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 37856    Accepted Submission(s): 14981

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

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; int a[200005];
int p[200005];
int n,m; int lowbit(int x)
{
return x&(-x);
} void build()
{
int i,j;
for(i=1;i<=n;i++)
{
p[i]=a[i];
for(j=1;j<lowbit(i);j<<=1)
{
if(p[i]<p[i-j])
p[i]=p[i-j];
}
}
} void insert(int i,int x)
{
a[i]=x;
while(i<=n)
{
if(p[i]<x)
p[i]=x;
else break; i += lowbit(i);
}
} int query(int l,int r)
{
int maxn=a[r];
while(true)
{
if(maxn<a[r])
maxn=a[r];
if(l==r) break; for(r-=1;r-l>=lowbit(r);r-=lowbit(r))
{
if(maxn<p[r])
maxn=p[r];
}
}
return maxn;
} int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(p,0,sizeof p);
int i;
for(i=1;i<=n;i++)
scanf("%d",a+i);
build(); char c[3];
int x,y;
for(i=1;i<=m;i++)
{
scanf("%s%d%d",c,&x,&y); if(c[0]=='Q')
printf("%d\n",query(x,y));
else
insert(x,y);
}
} return 0;
}

HDUJ 1754 I Hate It的更多相关文章

  1. HDU 1754区间最值 & SPLAY

    真是亲切的1754啊..第一道傻逼版的线段树做的是这个,后来学了zkw做的是这个,在后来决定打lrj线段树又打了一遍,如今再用splay和老朋友见面   从上到下依次为:加了读入优化的splay,sp ...

  2. hdu 1754 Ihate it

    I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit St ...

  3. 【HDOJ】【1754】I Hate It

    线段树 这是一道线段树的裸题……带单点修改的RMQ 为什么我会想到写这么一道傻逼题呢?是因为这样……

  4. 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 ...

  5. hdu 1754 I Hate It (splay tree伸展树)

    hdu 1754 I Hate It 其实我只是来存一下我的splay模板的..请大牛们多多指教 #include<stdio.h> #include<string.h> #i ...

  6. hdu 1754 线段树模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 #include <cstdio> #include <cmath> # ...

  7. HDU 1754 I Hate It (段树 &amp; 树阵)

    I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. 1754: [Usaco2005 qua]Bull Math

    1754: [Usaco2005 qua]Bull Math Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 398  Solved: 242[Submit ...

  9. HDU 1754 I Hate It(线段树之单点更新,区间最值)

    I Hate It Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. 字符(汉子)转换为ASCII

    一般在jdk里面都会自包含一个官方提供的转换工具:native2ascii.exe 调用方法: 打开cmd界面,使用cd  C:\Program Files\Java\jdk1.6.0_39\bin命 ...

  2. java项目获取路径的几种方式

    第一种: File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  3. [转]Laravel 4之控制器

    Laravel 4之控制器 http://dingjiannan.com/2013/laravel-controller/ 控制器 通常Laravel控制器文件放在app/controllers/目录 ...

  4. 检测 HTML5\CSS3\JAVASCRIPT 在浏览器的适应情况

    CSS3 Selectors Test : 这是CSS3.INFO网站提供的css选择器测试页面,它能够详细显示当前浏览器对所有CSS3选择器的支持情况.启动测试,浏览器会自动测验,并已列表的方式显示 ...

  5. UNION ALL

    select field1,field2,field3,field4 from table1 where ... UNION ALL select field1,field2,field3,field ...

  6. Android --------- 标签include位置设置无效

    给include设置below或align无效,是因为没有给include设置width和height.

  7. Android中使用shape来定义控件

    本文章转接于:http://kofi1122.blog.51cto.com/2815761/521605 Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对s ...

  8. UINavigationController 导航控制器

    一.导航视图控制器 1.管理视图控制器 2.控制视图控制器之间的跳转 3.是以压栈和出栈的形式来管理视图控制器 4.导航视图控制器必须要设置根视图控制器 5.导航是视图控制器包含UINavigatio ...

  9. Mybatis Generator最完整配置详解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...

  10. Java IO5:管道流、对象流

    前言 前面的文章主要讲了文件字符输入流FileWriter.文件字符输出流FileReader.文件字节输出流FileOutputStream.文件字节输入流FileInputStream,这些都是常 ...