B - I Hate It
#include<cstdio>
#include<string.h>
using namespace std;
int ans;
int max1=;
int a[];
struct Node{
int left;
int right;
int max;
}node[];
void TreeMake(int l,int r,int i)
{
node[i].left=l;
node[i].right=r;
node[i].max=;
if(l==r)
{
node[i].max=a[l];//是a[l]!!!!!
return;
}
else
{
int mid=(l+r)/;
TreeMake(l,mid,*i);
TreeMake(mid+,r,*i+);
node[i].max=node[*i].max>node[*i+].max?node[*i].max:node[*i+].max;//注意更新最大值,回溯
}
}
void Updata_tree(int l,int i)
{
if(node[i].left==l&&node[i].right==l)
{
node[i].max=ans;
return;
} else{
int mid=(node[i].left+node[i].right)/;
if(l<=mid) Updata_tree(l,*i);
if(l>mid) Updata_tree(l,*i+);
node[i].max=node[*i].max>node[*i+].max?node[*i].max:node[*i+].max;//注意回溯!!
} } void Query_tree(int l,int r,int i)
{
//if(node[i].left==l&&node[i].right==r)
// return node[i].max;
//
if(node[i].left>=l&&node[i].right<=r)
{
if(max1<node[i].max)
max1=node[i].max;
return;
}
int mid=(node[i].left+node[i].right)/;
if(r<=mid) Query_tree(l,r,*i);
else if(l>mid) Query_tree(l,r,*i+);
else
{
Query_tree(l,r,*i);
Query_tree(l,r,*i+);
}
} int main()
{
int n,m;
char ch[];
while(scanf("%d %d",&n,&m)!=EOF)
{
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
TreeMake(,n,);
while(m--)
{
scanf("%s",ch);
int x,y;
scanf("%d %d",&x,&y);
max1=;
if(ch[]=='Q')
{
Query_tree(x,y,);//查询(x,y)区间
printf("%d\n",max1);
}
if(ch[]=='U')
{
ans=y;
Updata_tree(x,);
}
}
}
return ;
}
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
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
6
5
9
Hint
Huge input,the C function scanf() will work better than cin
随机推荐
- JavaScript基础之DOM修改样式
1.获取或设置元素的内容:3个属性: 1. innerHTML: 获取或设置元素开始标签到结束标签之间的所有HTML代码原文. 何时使用:只要获得完整的html代码原文时 优化 ...
- Apache AB 如何传递参数
AB使用时,网上通篇一律,在进行示例时使用的连接一般都是http://*.com,这种写法是没有带参数,如果你想测试一个写入的Case,那需要传递参数给后台,如何传递参数呢? 这里有一个登录的请求,需 ...
- Scala 高级编程练习
定义自己的控制结构,使它语言内置的用法一样 package exp object Main { def enableCustomerIF = false; def main(args: Array[S ...
- MVB设备分类
连接在MVB上的设备按性能可以分为5类 MVB上的设备应具备下面六个性能中的一个或多个. MVB设备的性能 性能 说明 分类 设备状态 设备被轮询时能够发送出其设备状态 1,2,3,4,5 过程数据 ...
- java的Spring
歇了一年都没有写过自己博客了,在学习新东西的时候 ,应该把它们记下来,学了.net 去了公司没有多久就转成了java虽然都在做,还是觉得.net好,不过东西还是应该学习下去,这样才是正解! 首先学习的 ...
- aspx文件为什么会慢
你可以在 global.asax 的 Application_Start 方法中写一个日志,例如写 C# code ? 1 2 3 4 5 void Application_Start(objec ...
- Apache php Mysql部署(一)下载安装
前言 最近公司需要开发一个网站,但是又有特殊要求:不能使用java.只能在Windows平台部署.没方法,只能选择了Apache+php+Mysql的方案. 不知道有没有更好的,听所golang挺不错 ...
- 在非spring组件中注入spring bean
1.在spring中配置如下<context:spring-configured/> <context:load-time-weaver aspectj-weaving=&q ...
- AngularJS身份验证:Cookies VS Tokens
基于cookie的身份验证:Cookie-Based Authentication 基于token的身份验证:Token-Based Authentication 跨域:cross-domain 说明 ...
- eap-tls
eap-tls 文件路径 用途 示例 备注 #gedit /usr/local/etc/raddb/sites-available/default #gedit /usr/local/et ...