#include <iostream>
#include <stdio.h>
#include <algorithm>
#define lson rt<<1,L,mid
#define rson rt<<1|1,mid+1,R
/*
AC
水题
题意:给出n个数,两种操作
U i x 将第i个数改成x
Q x y 查询[x,y]中两个数的和的最大值,这两个数不能为同一个
即只要求该区间第一大和第二大的数,他们的和即为答案
*/
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=;
int n,m; struct Node{
long long m1,m2; //存储该区间第一大的数和第二大的数
}tree[maxn<<]; void pushUp(Node &rt,Node &ls,Node &rs){
if(ls.m1>rs.m1){
rt.m1=ls.m1;
if(ls.m2>=rs.m1)
rt.m2=ls.m2;
else
rt.m2=rs.m1;
}
else if(ls.m1==rs.m1){
rt.m1=rt.m2=ls.m1;
}
else{
rt.m1=rs.m1;
if(rs.m2>=ls.m1)
rt.m2=rs.m2;
else
rt.m2=ls.m1;
}
}
void build(int rt,int L,int R){
if(L==R){
scanf("%lld",&tree[rt].m1);
tree[rt].m2=-INF;
return;
}
int mid=(L+R)>>;
build(lson);
build(rson);
pushUp(tree[rt],tree[rt<<],tree[rt<<|]);
}
void update(int rt,int L,int R,int x,long long c){
if(L==R){
tree[rt].m1=c;
tree[rt].m2=-INF;
return;
}
int mid=(L+R)>>;
if(x<=mid)
update(lson,x,c);
else
update(rson,x,c);
pushUp(tree[rt],tree[rt<<],tree[rt<<|]);
} Node query(int rt,int L,int R,int l,int r){
if(l<=L&&R<=r){
return tree[rt];
}
int mid=(L+R)>>;
Node tmp,r1,r2;
if(r<=mid)
tmp=query(lson,l,r);
else if(l>mid)
tmp=query(rson,l,r);
else{
r1=query(lson,l,mid);
r2=query(rson,mid+,r);
pushUp(tmp,r1,r2);
}
return tmp;
}
int main()
{
char str[];
int x,y;
long long v;
scanf("%d",&n);
build(,,n);
scanf("%d",&m);
for(int i=;i<=m;i++){
scanf("%s",str);
if(str[]=='U'){
scanf("%d%lld",&x,&v);
update(,,n,x,v);
}
else{
scanf("%d%d",&x,&y);
Node ans=query(,,n,x,y);
//cout<<ans.m1<<" "<<ans.m2<<endl;
printf("%lld\n",ans.m1+ans.m2);
}
}
return ;
}

SPOJ 3693 Maximum Sum(水题,记录区间第一大和第二大数)的更多相关文章

  1. SPOJ CNTPRIME 13015 Counting Primes (水题,区间更新,求区间的素数个数)

    题目连接:http://www.spoj.com/problems/CNTPRIME/ #include <iostream> #include <stdio.h> #incl ...

  2. SPOJ 7259 Light Switching (水题,区间01取反)

    #include <iostream> #include <stdio.h> #include <algorithm> #define lson rt<< ...

  3. codeforces 577B B. Modulo Sum(水题)

    题目链接: B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  4. codeforces 702A A. Maximum Increase(水题)

    题目链接: A. Maximum Increase time limit per test 1 second memory limit per test 256 megabytes input sta ...

  5. openjudge dp水题记录

    当发现自己竟然不会打dp的时候内心是崩溃的,然后按照一年前的刷题记录刷openjudge,然后发现自己准确率比一年前(刚学信竞两个月时)的准确率低得多,已经没救. 列一下最近打的几道sb题 2985: ...

  6. Distinct Substrings SPOJ - DISUBSTR(后缀数组水题)

    求不重复的子串个数 用所有的减去height就好了 推出来的... #include <iostream> #include <cstdio> #include <sst ...

  7. SPOJ - AMR11H Array Diversity (水题排列组合或容斥)

    题意:给定一个序列,让你求两种数,一个是求一个子序列,包含最大值和最小值,再就是求一个子集包含最大值和最小值. 析:求子序列,从前往记录一下最大值和最小值的位置,然后从前往后扫一遍,每个位置求一下数目 ...

  8. Codeforces Round #599 (Div. 2) A. Maximum Square 水题

    A. Maximum Square Ujan decided to make a new wooden roof for the house. He has

  9. NOIP前的水题记录

    CF147B Smile House 二分+矩阵快速幂,注意一下储存矩阵相乘结果的矩阵,初始化时,a[i][i]=-inf(而其他都可以a[i][i]=0,为了保证答案的可二分性). CF715B C ...

随机推荐

  1. The breakpoint will not currently be hit. No symbols have been loaded for this document."

    C# exe calls function from a native C++ DLL, and breakpoints set inside C++ source code cannot be hi ...

  2. mobileconfig文件的签名和认证(signed、verified)

    专题:基于IOS上MDM技术相关资料整理及汇总mobileconfig文件的签名和认证(signed.verified) 一.功能描述: 鉴于我们的设备和MDM server之间已经可以通信,并能完成 ...

  3. Windows Phone 8仿Toast弹出通知。

    Wp8后台收到消息可以弹出Toast通知,可是应用在前台跑的时候却好像没有办法弹出Toast通知.而需求上有要求要弹出Toast通知,在这种情况下,就开始考虑是否能够做一个类似Toast的弹出通知呢? ...

  4. 【风马一族_Android】Android 从命令行界面获取手机信息

    Android 从命令行界面获取手机信息 1: cmd 打开命令行界面 2:adb devices   获取与电脑相连的设备,例如:模拟器.真机(手机) (右击“标记”,选择设备名称,点击“Ctrl+ ...

  5. iOS屏幕尺寸和分辨率

    iOS平台家族成员主要包括iPhone.iPod Touch和iPad,但是各类设备的分辨率各不相同,目前存在的尺寸主要有: iOS设备的尺寸多种多样,此外,屏幕的分辨率也有多种,总结如下表所示: 其 ...

  6. 自己手写简约实用的Jquery tabs插件(基于bootstrap环境)

    一直想改版网站首页的图书展示部分,以前的展示是使用BootStrap的传统的collapse,网页篇幅占用大,也不够美观,操作也相对来说比较麻烦.于是有了自己利用Jquery来做一个图书展示的tabs ...

  7. Python中Cookie的处理(二)cookielib库

    Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...

  8. 通过keepalived实现 MySQL VIP 自动切换

    首先配置keepalived.链接如下:http://blog.itpub.net/28939273/viewspace-1808369/ 主服务器keepalived的配置文件内容如下: [root ...

  9. 虚拟机Linux下找不到/dev/cdrom

    问题描述: 笔者欲更新一下VMwareTools,结果发现虚拟机Linux上找不到设备"/dev/cdrom",当然也就不能通过命令"mount /dev/cdrom / ...

  10. 从零开始学ios开发(七):Delegate,Action Sheet, Alert

    Action Sheet和Alert是2种特殊的控件(暂且称之为控件吧,其实不是控件真正的控件,而是ios中的2个类,这2个类定义了2种不同类型的用于和用户交互的弹出框),Action Sheet是从 ...