题意:两种操作,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. 2019 wannafly winter camp day5-8代码库

    目录 day5 5H div2 Nested Tree (树形dp) 5F div2 Kropki (状压dp) 5J div1 Special Judge (计算几何) 5I div1 Sortin ...

  2. Java异常关闭资源的两种方式

    try-catch-finally 常用,在异常关闭时应判断流是否为空 public class CloseableUtils { public static void closeable(Close ...

  3. 设计模式四人帮(GOF)是什么?

    1994年,有四位作者:Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides发表了一本题为<设计模式 - 可重用的面向对象软件元素>的 ...

  4. git 强制取消本地修改

    本地的项目中修改不做保存操作,可以用到Git pull的强制覆盖,具体代码如下: git fetch --allgit reset --hard origin/master git fetch 指令是 ...

  5. linux模范配置文件格式

    模范配置文件 #--------------------------------------------------------------------- # Global settings #--- ...

  6. python调用tushare获取IPO新股上市列表数据

    接口:new_share 描述:获取新股上市列表数据 限量:单次最大2000条,总量不限制 积分:用户需要至少120积分才可以调取,具体请参阅本文最下方积分获取办法 注:tushare包下载和初始化教 ...

  7. Warshall算法和Floyd算法

    不用说这两位都是冷门算法……毕竟O(n^3)的时间复杂度算法在算法竞赛里基本算是被淘汰了……而且也没有在这个算法上继续衍生出其他的算法… 有兴趣的话:click here.. 话说学离散的时候曾经有个 ...

  8. vue中wath的源码实现

    前言 阅读本节,需要理解vue的数据驱动原理. 看这样一段代码 new Vue({ data: { msg: 'hello', say: 'hello world', }, watch: { msg( ...

  9. C#跨线程访问(一) ---- SynchronizationContext

    一.SynchronizationContext顾名思义是同步上下文的意思.利用此对象可以实现线程间数据的同步.异步访问. 二.例子 class Program { static Thread _wo ...

  10. 杭电多校第一场-M-Code

    题目描述 After returning with honour from ICPC(International Cat Programming Contest) World Finals, Tom ...