hdu 3308(线段树区间合并)

[Pytorch案例实践001]手写MNIST数字识别 Pytorch实现手写数字识别,带完整数据集。 阅读详情

线段树的区间并,这道题是比较简单的一个,,重点是细节的处理


#include<bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define sf scanf
#define pf printf
#define mem(a,b) memset(a,b,sizeof(a));
#define rep(i,a,b) for(int i=(a);i<=(b);++i)
#define MP make_pair
#define ULL unsigned long long
#define LL   long long
#define inf 0x3f3f3f3f
#define md ((ll[i]+rr[i])>>1)
#define ls (i<<1)
#define rs (ls|1)
#define eps 1e-5
#define N 200050
#define ree freopen("in.txt","r",stdin);
#define bug pf("----------------");
//2017年09月25日21:29:24

int ll[N<<2],rr[N<<2],a[N],lx[N<<2],rx[N<<2],mx[N<<2];
int n,m;
int len(int i){
    return rr[i]-ll[i]+1;
}

void up(int i){
    mx[i]=max(mx[ls],mx[rs]);
    if(a[md]<a[md+1]){
        mx[i]=max(mx[i],rx[ls]+lx[rs]);
        if(lx[ls]==len(ls))
            lx[i]=len(ls)+lx[rs];
        else
            lx[i]=lx[ls];
        if(rx[rs]==len(rs))
            rx[i]=len(rs)+rx[ls];
        else
            rx[i]=rx[rs];
    }
    else{
        lx[i]=lx[ls],rx[i]=rx[rs];
    }
}

void build(int l,int r,int i){
    ll[i]=l,rr[i]=r;
    if(l==r){
        mx[i]=lx[i]=rx[i]=1;
        return ;
    }
    build(l,md,ls);build(md+1,r,rs);
    up(i);
}

void update(int p,int val,int i){
    if(ll[i]==rr[i])return ;
    if(p<=md)
        update(p,val,ls);
    else
        update(p,val,rs);
    up(i);
}
int query(int l,int r,int i){
    if(ll[i]==l&&rr[i]==r)
        return mx[i];
    if(r<=md)return query(l,r,ls);
    if(l>md)return query(l,r,rs);
    if(a[md]>=a[md+1])
        return max(query(l,md,ls),query(md+1,r,rs));
    int ret=max(query(l,md,ls),query(md+1,r,rs));
    int head=max(l,md-rx[ls]+1);
    int tail=min(r,md+lx[rs]);
    ret=max(ret,tail-head+1);
    return ret;
}
int main(){
    //ree
    int cas;
    sf("%d",&cas);
    while(cas--){
        sf("%d%d",&n,&m);
        for(int i=1;i<=n;++i)sf("%d",&a[i]);
        build(1,n,1);
        int k,v,l,r;
        while(m--){
            char op[2];sf("%s",op);
            if(op[0]=='Q'){
                sf("%d%d",&l,&r);
                l++;r++;
                pf("%d\n",query(l,r,1));
                continue;
            }
            sf("%d%d",&k,&v);
            k++; a[k]=v;
            update(k,v,1);
        }
    }
}
CoMP 协同多点传输技术 CoMP CoMP是什么 解决什么问题 有什么缺点 CoMP(Coordinated Multiple Points)协同多点传输,通信术语,LTE-A的重要技术之一。 CoMP传输是指地理位置上分离的多个传输点,协同参与为一个终端的数据(PDSCH)传输或者联合接收一个终端发送的数据(PUSCH),参与协作的多个传输点通常指不同小区的基站。CoMP技术将边缘用户置于几个基站的同频率上,几... 阅读详情

相关推荐

AUTOSAR网络管理配置详解:Vector DaVinci工具全面讲解

手把手带你用Vector DaVinci完成AUTOSAR网络管理模块的配置,涵盖NmChannel、NmPdu、重复帧抑制等关键参数设置,深入解析CAN总线上的NM报文调度与唤醒机制,助你扎实掌握AUTOSAR网络管理核心实践。

weixin_42504649的博客 168

hdu 3308:LCIS

线段树

weixin_46266058的博客 470

告别复杂配置:利用原生DDNS实现IPv6直连群晖的极简指南

本文详细介绍了如何利用原生DDNS实现IPv6直连群晖NAS的极简方法,告别复杂配置。从检查IPv6网络环境、路由器防火墙设置到群晖DDNS配置,一步步指导用户完成设置,并分享移动网络下的使用体验和安全防护建议,帮助用户轻松实现远程访问。

weixin_30918633的博客 413

HDU - 3308(区间合并类)

只需单点修改和求区间最大连续上升序列长度。 那么,维护左的最大升长,右的最大降长,和区间最大升长。便可区间合并。因为查询的区间合并和上推区间合并动作一致,用一个node函数抽象一下就行了。 #include #include #include #include #include using namespace std; typedef long long LL; #define ls

playwfun的专栏 411

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

随着新零售和智能仓储的快速发展,商品识别技术成为计算机视觉领域的重要研究方向。本文详细介绍了基于YOLO系列算法的商品识别系统的完整实现方案,涵盖算法原理、数据集构建、模型训练、系统集成和可视化界面开发。通过对比YOLOv5到YOLOv8各版本性能差异,我们构建了一个高效、准确且用户友好的商品识别系统,并提供完整的代码实现。

YOLO 284

汽车信息安全--SHE中的密钥管理(二)

上一篇我们讲解了HTA基本概念,SHE和EVITA HSM区别以及SHE的架构,接下来我们聊一聊SHE中的密钥管理策略。

认真搞搞汽车MCU 2402

HDU 3308——LCIS【线段树 & 单点更新 & 区间和并 & 维护区间LIS】

题目传送门 Problem Description Given n integers. You have two operations: U A B: replace the Ath number by B. (index counting from 0) Q A B: output the length of the longest consecutive increasing subsequ...

NIRVANA REBIRTH 503

n8n AI高效工作流自动化 部署使用教程

摘要: n8n是一款开源可视化工作流自动化工具,结合AI能力可高效解决重复性任务。文章详细介绍了从Docker部署到实战应用的完整流程:1)通过Docker Compose自托管n8n,确保数据可控;2)以AI客服日报机器人为例,演示如何串联工单系统、ChatGPT和邮件通知,实现定时自动化;3)进阶搭建交互式AI助手,利用ToolsAgent节点调用业务API;4)整合向量数据库构建RAG知识库问答。关键建议包括:拆分复杂工作流、严格管理凭据、区分开发与生产环境,并建议从高频刚性需求(如日报生成)切入,逐

专注AI大模型,软件混淆,授权 266

hdu 3308 LCIS (线段树+单点更新+区间合并)

题意:给定n个数,然后对这n个数进行m次操作。一种操作是将第A个数替换成B,另一种操作是询问区间[a,b]是的最长连续递增子序列的长度。   分析:每个节点分别记录包括左端点的LCIS、包括右端点的LCIS和区间上的LCIS。   代码如下: #include #include #include using namespace std; const int maxn = 100

~飞呀,飞~ 698

【优化模型】求解混合整数线性规划 MILP 问题

混合整数线性规划(Mixed Integer Linear Programming,MILP)是一类优化问题,其中目标函数和约束条件均为线性,并且包含整数变量。MILP 在实际应用中具有广泛的应用,可以解决很多实际问题,如生产调度、网络设计、资源分配等。f — 系数向量。系数向量,指定为实数向量或实数数组。intcon — 整数约束组成的向量。整数约束组成的向量,指定为正整数向量。intcon 中的值指示决策变量 x 中应取整数值的分量。A — 线性不等式约束。线性不等式约束,指定为实矩阵。

Fanjufei的博客 2497

ARM Linux工控板+C# .NET Core:倍福ADS协议轻量化工业控制(附跨平台部署代码)

某自动化设备厂的倍福PLC控制系统曾依赖传统x86工控机:单台设备需配备1台Intel i5工控机(成本约8000元),功耗30W+,且Windows系统稳定性受工业环境干扰(如电磁辐射导致蓝屏)。更棘手的是,设备需部署在产线边缘(空间狭小),x86工控机的体积(4U机架)和散热需求(风扇噪音)难以适配;而多设备部署时,高硬件成本和高功耗导致年运维成本超20万元。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 954

HDU-3308-(LCIS)

题目 Problem Description Given n integers. You have two operations: U A B: replace the Ath number by B. (index counting from 0) Q A B: output the length of the longest consecutive increasing subsequence...

qq_42576687的博客 429

Openclaw 附录B 常用Skills清单

核心作用支持URL、网页、PDF、图片、音频和YouTube视频的摘要与字幕提取,由OpenClaw创始人@steipete开发的官方内置Skill。安装⚠️说明:原推荐的summarize未在ClawHub验证到,YouTube字幕提取功能已内置于summarize中。使用场景“提取这个2小时Next.js教程视频的核心代码逻辑,按章节整理成学习笔记”推荐指数:⭐⭐⭐⭐。

Maynor的博客 857

线段树基础之区间合并HDU3308

LCIS 题意 给出两种操作 1.单点修改 2.求出区间最大严格递增长度 做法 线段树维护区间递增长度 tree的构造很重要 我一开始用了一个maxx记录递增长度,lval记录左端点值,rval记录右端点值 但是发现这样好像并不能做到push_up,因为情况分不清楚 后来看了题解后 真的很巧妙,但是自己第一次接触实在是想不出来0.0 AC代码 /** * Author1: low-equipp...

想要一只银渐层 164

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

线段树 区间合并解决动态LCIS问题 配题(HDU 3308)

动态LCIS问题:动态的最长连续上升子序列。 如果该序列是静态的,那么既可用线段树的区间合并操作来求解LCIS,又可以使用动态规划方式来求解。 如果该序列是动态的,不断地要更新序列的权重并且进行及时的LCIS求解,此时如果依旧使用DP方式,难免过于耗时,因为动态规划方式,是进行预处理,之后缩短查询的时间,但是一旦序列是动态之后,需要不断地预处理,非常耗时。故使用线段树的区间合并操作来解决动态L...

猫ER 1216

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

HDU - 3308 - LCIS (线段树区间合并)

题目:HDU - 3308 题意:n个数字,q个操作,有两种操作:1.Q询问操作:在x,y区间内最长的连续递增子序列的长度。2,替换操作,把下标为x数替换为y. 题解:线段树区间操作典型例题,跟POJ-2750很相似,加深了对区间操作的理解 代码: #include<bits/stdc++.h> #define N 100005 #define lson node<&l...

Rotepad的博客 345

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

hdu3308 LCIS(线段树区间合并)

题目链接:hdu3308/*hdu3308 LCIS 线段树区间合并 题目大意: 求一段区间内的连续最长 思路: 记录以区间左端点开始的LCIS,以区间右端点结尾的LCIS以及整个区间的LCIS, 区间左端点的数和区间右端点的数。 更新和建树操作都应更到叶子节点,只有叶子节点的信息时可以直接得出,然后 递归回到父节点,父节点可以根据左右孩子的信息来更新自己 */ #include

no pains,no gains 1164

HDU3308 线段树区间合并 (求最长连续子串+单点修改)

传送门:HDU3308分析:线段树区间合并被刷烂的水题。。把自己代码风格的线段树放上来。//HDU3308 线段树区间合并 (求最长连续子串+单点修改) #include &lt;cstdio&gt; using namespace std; const int maxn = 100000; struct node{ int l,r; int lv,rv,mv; }; int n...

勇敢前进的ACMer 630

HDU3308线段树区间合并

HDU3308 线段树好题 #include #include #include #include #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 using namespace std; const int maxn=100005; int num[maxn]; int msum[maxn<<2]; int l

scutzyz126的博客 240

HDU OJ 3308 LCIS 【线段树之区间合并】

原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 题意:…… 思路:线段数的区间合并问题,和上篇类似,具体参考http://blog.youkuaiyun.com/piaoyi0208/article/details/8149804 AC代码: #include #include #include #define Mid(a,b) (a+b)>

nyist_飘谊 2769

[HDU 3308]LCIS[线段树][区间合并]

hdu3308 LCIS 给定10^5个数,区间查询严格上升的最长连续序列长度,点更新某个数. 线段树,区间合并 有三个数组,msum, lsum, rsum,分别存总最长,左端串长,右端串长 一直错的一个地方是:query中,合并的时候,若左右儿子可以合并,应该取max{min[左儿子右长,实际右长],min[右儿子左长,实际左长]},而不是max{min[左儿子最大长,

以中有足乐者... 933

HDU-3308 线段树 区间合并

题意: 多组输入,对于每一个样例,第一行有两个整数:n,m。第二行有一个长度为n的序列。接下来m行为m次操作。对于每一次的查询操作,输出给定区间的最长连续上升子序列的长度,对于每一次的修改操作,将给定位置的整数替换为指定的整数. 思路:线段树 单点更新 区间合并 详情看代码。 #include <iostream> #include <stdio.h> #includ...

CoAAColA的博客 290

HDU3308 LCIS 线段树区间合并

HDU3308 LCIS 线段树区间合并

qq_44919369的博客 206

HDU3308 线段树区间合并

  题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308 ,简单的线段树区间合并。   线段树的区间合并:一般是要求求最长连续区间,在PushUp()函数中实现区间合并操作。 解法:   由于对于一个区间的最长序列来说,最优解要么完全在左半序列,要么完全在右半序列,要么跨越中间点。所以可以构造线段树,维护结点区间的三个元素:最长上升...

weixin_34033624的博客 174

HDU3308 LCIS (线段树区间合并)

题目链接: LCIS 大致题意 给定一个长度为nnn的序列. 有mmm次操作: U a c 把第aaa个位置的数字修改为ccc. Q l r 询问[l,r][l, r][l,r]的最长连续严格递增子序列(下文用LCIS代替). 特别的, 题目下标从000开始. 解题思路 线段树 (超经典, 在做树上LCIS时过来验了下pushup) 我们可以通过线段树的区间合并来解决本类题目: 考虑当前有两个区间left,rightleft, rightleft,right. 设合并后的新区间为resresres. 那

Fau的博客 617

hdu 3308 线段树区间合并

http://acm.hdu.edu.cn/showproblem.php?pid=3308 自己把每一步都考虑清楚了,草稿纸写了一大面,无奈代码还是没码出来,参考了下别人的,,,过了三天。自己再写了一遍,终于做出来了,这是一道线段树区间合并的题目。 #include #include #include #include using namespace std; #define maxn 11

ACM_korun 818
上一篇: Codeforces Round #436 (Div. 2) E. Fire
下一篇: M - Sequence operation HDU - 3397 线段树,成段更新,区间合并)
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值