HDU 3308 LCIS 线段树

实测|龙虾机器人(OpenClaw)Windows系统部署全攻略(含避坑指南) 先简单科普下:龙虾机器人本质是一款开源AI代理框架,核心优势是“能行动、可本地、高灵活”——它不内置大模型,需要对接第三方AI接口(如GPT、Claude、阿里云百炼等),但能将AI的指令转化为实际的系统操作,相当于给AI配了一个“能动手的身体”,这也是它和普通对话大模型的核心区别。今天就结合自己的实测经历,从环境准备、分步部署、初始化配置,到常见问题排查,写一篇保姆级攻略,不管是新手还是有一定技术基础的同学,都能跟着一步步完成部署,少走弯路~解决方案:检查聊天软件插件是否安装成功,权限是否配置完整; 阅读详情

题意:求一个区间最长子序列的长度

对于一个区间,记录区间的最长连续子序列的长度,记录从左边开始最长连续子序列的长度,记录从右边开始最长连续子序列的长度

一个区别最长连续子序列的长度 只可能是 它的左子区间 最长连续子序列的长度 或者 它的右子区间 最长连续子序列的长度 或者 左子区间和右子区间合并后中间的长度,维护从左边开始最长连续子序列的长度和从右边开始最长连续子序列的长度就是为了求左子区间和右子区别合并后中间的长度。

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3308

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iostream>

const int MAXN = 100005;

struct Node {
    int x,y;
    int maxlen;
    int leftlen,rightlen;
}t[MAXN << 2];

int a[MAXN];

void PushUp(int rt) {
    int maxlen = 0;

    //Update maxlen;
    if(t[rt<<1].maxlen > maxlen) maxlen = t[rt<<1].maxlen;
    if(t[rt<<1|1].maxlen > maxlen) maxlen =  t[rt<<1|1].maxlen;
    if(a[t[rt<<1].y] < a[t[rt<<1|1].x]) {
        if(maxlen < t[rt<<1].rightlen + t[rt<<1|1].leftlen) {
            maxlen = t[rt<<1].rightlen + t[rt<<1|1].leftlen;
        }
    }
    t[rt].maxlen = maxlen;

    //Update leftlen;
    if(t[rt<<1].leftlen < (t[rt<<1].y - t[rt<<1].x + 1)){
        t[rt].leftlen = t[rt<<1].leftlen;
    }
    else {
        if(a[t[rt<<1].y] < a[t[rt<<1|1].x]) {
            t[rt].leftlen = t[rt<<1].leftlen + t[rt<<1|1].leftlen;
        }
        else {
            t[rt].leftlen = t[rt<<1].leftlen;
        }
    }

    //Update rightlen;
    if(t[rt<<1|1].rightlen <(t[rt<<1|1].y - t[rt<<1|1].x +1)) {
        t[rt].rightlen = t[rt<<1|1].rightlen;
    }
    else {
        if(a[t[rt<<1|1].x] > a[t[rt<<1].y]) {
            t[rt].rightlen = t[rt<<1].rightlen + t[rt<<1|1].rightlen;
        }
        else {
            t[rt].rightlen = t[rt<<1|1].rightlen;
        }
    }

}

void Build(int x,int y,int rt){
    t[rt].x = x;
    t[rt].y = y;
    if(x == y) {
        t[rt].maxlen = 1;
        t[rt].leftlen = 1;
        t[rt].rightlen = 1;
        return;
    }
    int mid = (x + y) >> 1;
    Build(x,mid,rt<<1);
    Build(mid+1,y,rt<<1|1);
    PushUp(rt);
}

void Update(int x,int y,int rt,int pos,int value) {
    if(x == y) {
        a[pos] = value;
        return;
    }
    int mid = (x + y) >> 1;
    if(mid >= pos) {
        Update(x,mid,rt<<1,pos,value);
    }
    else {
        Update(mid+1,y,rt<<1|1,pos,value);
    }
    PushUp(rt);
}

int ans,temp_ans,temp_right,temp_rightlen;

void Query(int x,int y,int rt,int x_edge,int y_edge) {
    if(x >= x_edge && y <= y_edge) {
        //Update temp_ans;
        temp_ans = 0;
        if(a[temp_right] < a[x]) {
            temp_ans =  temp_rightlen + t[rt].leftlen;
        }
        if(t[rt].maxlen > temp_ans) temp_ans = t[rt].maxlen;
        
        //Update ans;
        if(temp_ans > ans) ans = temp_ans;

        //Update temp_rightlen;
        if(t[rt].rightlen <(t[rt].y - t[rt].x +1)) {
            temp_rightlen = t[rt].rightlen;
        }
        else {
            if(a[t[rt].x] > a[temp_right]) {
                temp_rightlen += t[rt].rightlen ;
            }
            else {
                temp_rightlen = t[rt].rightlen;
            }
        }

        // Update temp_right;
        temp_right = y;
        return ;
    }
    int mid = (x + y) >> 1;
    if(mid >= x_edge)
        Query(x,mid,rt<<1,x_edge,y_edge);
    if(mid < y_edge)
        Query(mid+1,y,rt<<1|1,x_edge,y_edge);
}

void print(int x,int y,int rt) {
    printf("Left : %d Right : %d Now : %d Maxlen : %d  Leftlen : %d Rightlen : %d\n",x,y,rt,t[rt].maxlen,t[rt].leftlen,t[rt].rightlen);
    if(x == y) return;
    int mid = (x + y) >> 1;
    print(x,mid,rt<<1);
    print(mid+1,y,rt<<1|1);    
}

void Deal_with() {
    int T,n,m;
    scanf("%d",&T);
    while(T--) {
        scanf("%d %d",&n,&m);
        memset(a,0,sizeof(a));
        for(int i = 1 ; i <= n ; i++) {
            scanf("%d",a+i);
            //printf("%d ",a[i]);
        }
        //puts("");
        Build(1,n,1);
        //print(1,n,1);
        char tempc[10];
        int pos,value,Left,Right;
        for(int i = 1 ; i <= m ; i++) {
            //getchar();
            scanf("%s",tempc);
            //printf("%c\n",tempc[0]);
            if(tempc[0] == 'U') {
                scanf("%d %d",&pos,&value);
                pos++;
                Update(1,n,1,pos,value);
            }
            else {
                scanf("%d %d",&Left,&Right);
                Left ++ ; Right ++ ;
                //printf("%d %d\n",Left,Right);
                ans = 0; temp_ans = 0; temp_rightlen = 0; temp_right = 0;
                Query(1,n,1,Left,Right);
                printf("%d\n",ans);
            }
        }
    }
}

int main(void) {
    //freopen("a.in","r",stdin);
    Deal_with();
    return 0;
} 



手把手教你学Simulink--基于Simulink的高增益DC-DC变换器仿真建模 特点高电压增益:可以在不使用变压器的情况下实现较大的电压升压比。适用于低电压源:如太阳能电池板、燃料电池等提供的低压直流电源。效率问题:设计时需特别注意提高效率,减少能量损失。挑战电路复杂性:通常涉及多个电感和电容,以及复杂的开关模式。元件选择:合适的元件参数对于达到理想性能至关重要。控制策略:确保高效稳定运行的同时,适应负载变化。首先明确要模拟的任务内容。实现特定的电压增益比(例如从24V升至380V)。根据预期的输入输出电压确定合适的电路拓扑和元件值。 阅读详情

相关推荐

QST QMC5883L —— 经典磁传感器的生存指南与替代预案

本文聚焦于QST旗下经典三轴磁力计 QMC5883L,解析其技术渊源、核心特性及当前面临的停产风险。结合真实应用场景提供续命方案与选型建议,为依赖该芯片的开发团队争取过渡时间窗口期。文章包含实测数据对比、生命周期管理策略及潜在替代方案拆解。存续价值判断✔️ 现有产品设计无需大幅改动即可延续生命;❌ 新项目采用将面临更高的维护成本;⚠️ 建议在6个月内完成技术路线切换。#磁传感器 #嵌入式开发 #供应链管理 #QST #QMC5883L。

2501_93066786的博客 999

【HDU 3308 LCIS】基础线段树

HDU 3308 为什么单做这题呢 因为这题和黑白石头一样具有经典型 我们要维护 lnum , rnum 左右的数 lmax,rmax,mmax 左边最长lcis 右边最长lcis 最大lcis长度 我们注意更新的时候不只有大于 而且还要长度等于整个区间 最后加的时候也要主要两个Min 因为可能取不到 比如和 x 比 lmax在最左边第一个数右边 那么你就取不到 /* if you can...

我是谁 --- 卡比兽 220

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

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

猫ER 1216

时空图神经网络实战:T-GCN在交通流量预测中的深度解析

本文深度解析了时空图神经网络T-GCN在交通流量预测中的实战应用。通过结合图卷积网络(GCN)和门控循环单元(GRU),T-GCN有效捕捉交通数据的时空依赖性,相比传统方法降低30%以上预测误差。文章详细介绍了T-GCN的核心技术、工程实践和优化策略,为智能交通系统提供有力工具。

weixin_29038537的博客 268

深度学习之常用算子介绍

打开 onnx 模型图,可以看到它是一个有向无环图。除了 Input、Output ,其他都是算子(是操作,而不是节点)在ONNX(Open Neural Network Exchange)模型中,除了输入和输出,其他都是算子(Operations)。算子是表示神经网络模型中的不同操作或层的元素。一个ONNX模型由一系列算子组成,通过连接这些算子来定义模型的计算流程。

ueke1的博客 8462

线段树(hdu3308LCIS、poj2777Count Color

hdu3308 LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10830 Accepted Submission(s): 4632 Problem Description Given n integers. You have two operations: U A B: replace the Ath number by B. (

yxrzibinanhai的博客 296

redhawk:Low Power Analysis

1.rush current与switch cell 在standby状态下为了控制leakage power我们选择power gating的设计方式,使用power switch cell关闭block/power domain的电源。 power switch的基本介绍可见: 低功耗设计-Power Switch power switch的table中有四种状态,对应block工作、待机和上电,下电。low power analysis主要分析上电的过程。 上电过程可以看做mos电容

m0_61544122的博客 3206

hdu3308 LCIS(线段树区间合并)

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

no pains,no gains 1164

71、CAN总线双绞线绞距与抗共模干扰的定量关系

摘要:本文探讨了CAN总线双绞线绞距与抗共模干扰的定量关系。通过理论推导得出共模电压与绞距平方成正比,绞距越小抑制效果越好。工程实践表明,工业现场推荐绞距不超过30mm,高频干扰场景需优先优化绞距。实测数据验证了绞距均匀性的重要性,建议控制在15-25mm范围,安装时保持绞合结构完整。案例显示,将绞距从50mm改为15mm后,共模干扰从12V降至1.8V,有效解决了CAN通信问题。绞距选择需兼顾理论计算与现场实测,同时注意与屏蔽层的协同设计。

2401_88858637的博客 189

Coze智能体开发:搭建一个解析 PDF 文件的工作流

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 2814

hdu 3308 LCIS(线段树)

题目链接:hdu 3308 LCIS 题目大意:给定一个序列,两种操作: Q l r:查询区间l,r中的最长连续递增序列长度U p x:将位置p上的数改成x 解题思路:线段树上的区间合并,这是在左右子树合并的时候要判断一下是否满足递增即可。 #include #include #include using namespace std; const int maxn =

不慌不忙、不急不躁 1142

用 CDS View I_APARToleranceGroup 管理客户与供应商收付差异容差:配置语义、字段解读与 ABAP 落地实践

财务共享服务中心常面临小额差异处理的挑战,SAP通过"客户/供应商容差组"机制实现自动清账规则配置。CDS视图I_APARToleranceGroup将配置数据转化为可查询维度,包含宽限天数、固定现金折扣等关键业务参数。该视图支持按公司代码和容差组查询差异处理策略,可用于报表开发、主数据校验和接口合规检查,帮助财务团队高效管理海量小额交易差异,减少手工操作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 130

HDU3308LCIS(线段树)

题目链接:hdu3308 题目大意:大致就是给一个带修改动态的序列,让你求每次询问的区间最长上升子序列的长度,这个上升子序列是连续的。 思路:由于是连续的,并且是区间问题可以考虑用线段树去维护它。如何维护这个线段树呢? 我们发现一个区间的LCIS得到的贡献只有三种情况:左区间、右区间、左右区间。如果维护左右区间的LCIS的长度的话到时只要取一个最大的上来即可。如何维护上升和左右区间呢?*...

小胡同的诗 358

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HDU 3308 LCIS(线段树:单点更新,求最大连续子串)

HDU 3308 LCIS(线段树:单点更新,区间合并) 分析:       首先题目中找的递增序列是严格增加的,如果有7,7这样的序列不算递增.其次本题是单点更新,所以不用PushDown,只用PushUp就行.        线段树维护信息:val(表节点的值,只有子节点有用,这个信息也可以不维护的),sub(最长上升子序列的长度),pre(最长上升前缀的长度),suf(最长上升后缀的长

code 2621

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【HDU 3308】LCIS(线段树合并)

维护一个区间的包含最左的元素的LCIS,包含最右元素的LCIS,以及整个区间的LCIS, 然后pushup的时候就更新这三个值就行了。注意要考虑左右儿子可以“接”起来的情况等等 查询的时候要注意,也要考虑左右可以“接”起来时候,不过还要注意,有可能左右儿子边界的已经“越界了”,就是超过了查询范围,还要取个min,这道题坑就坑在这儿 #include<bits/stdc++.h&gt...

Android66666的博客 213

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU 3308 LCIS 最长连续递增序列+数据结构+线段树+单点更新

HDU 3308 LCIS Time Limit:2000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u SubmitStatus Description Given n integers. You have two operations: U A B: replace the Ath

fans_ac的博客 444

hdu 3308 LCIS (线段树)

http://acm.hdu.edu.cn/showproblem.php?pid=3308 LCIS Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2959 Accepted Submission(s): 1287...

diansitao5461的博客 173

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

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

以中有足乐者... 933

HDU 3308 LCIS 线段树 区间更新

  题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3308   题目描述: 有两种操作, U x y , 第xth赋值为y 。Q x y , 查询区间x-y的最长连续上升子序列的长度L   解题思路: 对于线段树不好的我依然好难.....有太多细节需要注意了....但是这是一道很好的题, 一段区间的L可能从三个地方来, 一种是中间, 一种是以...

weixin_34292924的博客 139

HDU3308 LCIS 线段树区间合并

HDU3308 LCIS 线段树区间合并

htrdchh的博客 184

HDU - 3308 LCIS (线段树 单点更新 区间查询)

hdu 3308 http://acm.hdu.edu.cn/showproblem.php?pid=3308题意:要维护最长连续子序列思路:区间查询,需要知道每段的前缀最大lcis,后缀lcis,每次用子节点来更新父节点的值的时候就要比较左右结点的后缀和前缀能否相连,左节点的lcis,右结点的lcis,这中间最长的就是父节点的lcis。这两天深刻让我认识到了我的线段数和别人的线段树的差别。我的线段

shinimashzi 446

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

hdu3308 LCIS 线段树 难题

线段树_不错的 LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1607    Accepted Submission(s): 715 Problem Description Given n integers.

hnust_xiehonghao的专栏 704

HDU3308 LCIS(线段树区间合并+LCIS)

线段树区间合并的好题

蒲公英殇的博客 283
上一篇: TOJ 3858 Home 搜索
下一篇: POJ 3667 Hotel 线段树 区间合并
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值