题意:两种操作,Q L R查询L - R 的最长连续上升子序列长度,U pos val 单点修改值

#include <bits/stdc++.h>
#define N 100005
using namespace std;
int lcs[N<<],pre[N<<],suf[N<<],arr[N];维护区间lcs长度,以左端点为起点的lcs长度,以右端点为终点的lcs长度,这么做是为了处理区间合并后区间总lcs值的更新
void pushup(int l,int r,int rt)
{
int m=(l+r)>>;
lcs[rt]=max(lcs[rt<<],lcs[rt<<|]);
if(arr[m]<arr[m+])lcs[rt]=max(lcs[rt],suf[rt<<]+pre[rt<<|]);
pre[rt]=pre[rt<<];
if(pre[rt<<]==m-l+&&arr[m]<arr[m+])pre[rt]+=pre[rt<<|];
suf[rt]=suf[rt<<|];
if(suf[rt<<|]==r-m&&arr[m]<arr[m+])suf[rt]+=suf[rt<<];
}
void build(int l,int r,int rt)
{
if(l==r)
{
suf[rt]=pre[rt]=lcs[rt]=;
return;
}
int m=(l+r)>>;
build(l,m,rt<<);
build(m+,r,rt<<|);
pushup(l,r,rt);
}
void update(int pos,int val,int l,int r,int rt)
{
if(l==r)
{
arr[l]=val;
return;
}
int m=(l+r)>>;
if(pos<=m)update(pos,val,l,m,rt<<);
if(pos>m)update(pos,val,m+,r,rt<<|);
pushup(l,r,rt);
}
int query(int L,int R,int l,int r,int rt)
{
if(L<=l&&r<=R)return lcs[rt];
int m=(l+r)>>;
int mx=;
if(L<=m)mx=max(mx,query(L,R,l,m,rt<<));
if(m<R)mx=max(mx,query(L,R,m+,r,rt<<|));//这时的mx只是各子区间的最大值,必须考虑子区间连接之后的状态
int prex=min(R-m,pre[rt<<|]);
int sufx=min(m-L+,suf[rt<<]);
if(arr[m]<arr[m+])mx=max(mx,prex+sufx);
return mx;
}
int main()
{
int t,n,m;
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)scanf("%d",arr+i);
build(,n,);
char cmd[];
int l,r;
while (m--)
{
scanf("%s%d%d",cmd,&l,&r);
if(cmd[]=='U')update(l+,r,,n,);
else printf("%d\n",query(l+,r+,,n,));
}
}
return ;
}

HDU 3308 线段树求区间最长连续上升子序列长度的更多相关文章

  1. hdu 3308(线段树区间合并)

    LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. hdu 1754 I Hate It (线段树求区间最值)

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

  3. HDU 3308 线段树 最长连续上升子序列 单点更新 区间查询

    题意: T个测试数据 n个数 q个查询 n个数 ( 下标从0开始) Q u v 查询 [u, v ] 区间最长连续上升子序列 U u v 把u位置改成v #include<iostream> ...

  4. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  5. xdoj-1324 (区间离散化-线段树求区间最值)

    思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i]  覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...

  6. HDU 1698 <线段树,区间set>

    题目连接 题意: 一条长为N的铜链子,每个结点的价值为1.有两种修改,l,r,z; z=2:表示把[l,r]区间内链子改为银质,价值为2. z=3:表示把[l,r]区间内链子改为金质,价值为3. 思路 ...

  7. hdu 1394 (线段树求逆序数)

    <题目链接> 题意描述: 给你一个有0--n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,那么这样就形成了n个序列,那么每个序列都有一个逆序数,找 ...

  8. 【线段树求区间第一个不大于val的值】Lpl and Energy-saving Lamps

    https://nanti.jisuanke.com/t/30996 线段树维护区间最小值,查询的时候优先向左走,如果左边已经找到了,就不用再往右了. 一个房间装满则把权值标记为INF,模拟一遍,注意 ...

  9. hdu 3308 线段树

    题目大意:给n个数,两种操作1:U  a b   更新第a个为b (从0开始)2: Q    a ,b  查询 a,b之间LCIS(最长连续递增子序列)的长度. Sample Input110 107 ...

随机推荐

  1. 第十四届华中科技大学程序设计竞赛 K--Walking in the Forest

    链接:https://www.nowcoder.com/acm/contest/106/K来源:牛客网 题目描述 It’s universally acknowledged that there’re ...

  2. nginx502问题

    常见的502错误1.配置错误因为nginx找不到php-fpm了,所以报错,一般是fastcgi_pass后面的路径配置错误了,后面可以是socket或者是ip:port 2.资源耗尽lnmp架构在处 ...

  3. Dubbo入门到精通学习笔记(十六):Keepalived+Nginx实现高可用Web负载均衡

    文章目录 Keepalived+Nginx实现高可用Web负载均衡 Keepalived+Nginx实现高可用Web负载均衡 高可用架构篇 Keepalived + Nginx 实现高可用 Web 负 ...

  4. Java 反射获取私有方法

    通常我们创建一个类时,它的私有方法在类外是不可见的,但是可以通过反射机制来获取调用.具体的反射机制的介绍大家自己百度. 所以反射可能会破坏我们的单例模式,当然解决方案也是有的,就是做个标记记录次数,第 ...

  5. FVWM_SMALLEST_CONFIG

    ... # ----------------------------------------------------------------- # HANDBOOK: # http://yaoqian ...

  6. js图片放大境效果

    放大境效果如下图所示,当鼠标放到小图时,就会出现浅黄色的小块,而右边方框也出现了,并且右边方框的内容时根据浅黄色小块的内容变换而变换: 原理: 1,准备2张图,一大一小,如上图所示,小图的盒子div1 ...

  7. plsql连接问题

    PLsql好久没用了,今天想用的时候,发现自己忘记本地实例(system)的密码了,试了几个自己常用的密码都不对,提示“ORA-01017:invalid username/password;logo ...

  8. MySQL 小调研

    一. 概况: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL ...

  9. BBS论坛 文章详情、点赞、评论

    六.文章详情.点赞.评论 文章详情页面: def article_detail(request, username, article_id): # user_obj = models.UserInfo ...

  10. 了解GTIN小记

    GTIN为条形码,即"全球贸易项目代码"(Global Trade Item Number ) GTIN用作识别商品品项的全球性独一编码,是编码系统中应用最广泛的标识代码. GTI ...