首页 > 其他分享 >线段树复习

线段树复习

时间:2023-09-25 21:44:36浏览次数:42  
标签:复习 get 线段 len 序列 区间 最大值

1.楼房重建

经典题。先转化题意,将斜率转化为每个点的权值,发现答案是单调递增的。那么就是求单点修改的最长上升子序列。

用线段树维护两个信息当前区间的最大值 mx,当前区间最长上升子序列长度 len。

修改时单点修改即可,考虑如何合并两个区间的 len。可以在线段树上二分。get(o, k) 维护当前区间以大于 k 开头的最长上升子序列长度。

.如果当前区间的最大值小于等于k, 那么len = 0;
·如果左区间的最大值小于等于 k,直接搜索右区间;
·否则答案为 \(get(left, k) + len_o - len_{left}\) 。

标签:复习,get,线段,len,序列,区间,最大值
From: https://www.cnblogs.com/zhangwenyang/p/17728922.html

相关文章

  • Java复习
    Java重要特点java语言是面向对象的java语言是健壮的。Java的强类机制,异常处理,垃圾的自动收集等是java程序健壮性的重要保证。java语言是跨平台性的。【即一个编译好的.class文件可以在多个系统下运行,这种特性称为跨平台】java语言是解释型的。【解释性语言,编译后的代码不能直接被......
  • 2023湖南省赛 E.ytree (线段树)
    传送门大致思路:1.将操作1拆分为两个部分x(-1)^d+kd(-1)^d。对于操作1中的x(-1)^d部分而言。我们可以对式子进行拆分,把x拆出来,我们会发现和v号点距离为奇数的点会减去x,为偶数的点会加上x,所以我们可以在线段树上用一个sum1维护应该减去的值,sum2维护加上的值即可。2.随即就是......
  • 复习课9 转义字符
    一.导入如果我们想要调用printf()函数打印以下内容:c:\ncre\test那我们该如何编写代码呢?以下是我们以常理思维编写的代码:#include<stdio.h>intmain(void){printf("c:\ncre\test");return0;}但是当我们运行以后会发现程序输出的结果出乎我们意料,如图所示:程序输出的结果之所......
  • 机器学习初学与复习最佳教材—机器学习实战
    https://book.douban.com/subject/35218199/半年多几乎没碰机器学习,都快忘光了,虽然可能以后不做这方面研究,但作为实用小工具或者说基本技能来说还是很不错的!这本书的课后习题还可以用来复习概念。所以就有空整理一下里面的概念啦。《机器学习实战:基于Scikit-Learn、Keras和Tenso......
  • 推免复习(一):数据库复习提纲
    目录数据库基础概念数据、数据的定义、特性和分类数据模型、模式和实例数据库、数据库系统、数据库管理系统(DBMS)数据库的发展历程(层次模型、网状模型、关系模型、面向对象模型等)关系数据库关系数据模型的基本概念(关系、元组、属性、域)关系代数和关系演算数据完整......
  • <学习笔记>线段树分治
    一种离线处理方法可以处理“具体哪个修改对询问有影响”、可以贡献不独立、可以支持插入删除。例题对这道题来说,对修改开线段树,线段树上每个节点开一个\(vector\)来维护出现在这段区间的线段,加入一个线段的区间,直接在区间查询时对所包含的节点压入这条线段就可以。然后从根......
  • 复习课8 字符串
    一.字符串的定义"helloworld"由双引号引起来的一串字符称为字符串字面值,简称字符串下面我们来介绍一下字符串的输出方式,示例代码如下:#include<stdio.h>intmain(void){charstr[]="helloworld";printf("%s",str);return0;}我们这里创建了一个字符类型的数组名为str,我们......
  • 线段树合并的复杂度
    线段树合并的时间复杂度是\(O(m\logn)\)的(\(m\)为插入次数)。intmer(intx,inty){if(!x||!y)returnx^y;t[x]+=t[y];returnL[x]=mer(L[x],L[y]),R[x]=mer(R[x],R[y]),x;}因为每个点只会在自己被删除(情况1)或父亲被删除且自己未删除的(即合并时另一个子树为空,......
  • cka认证考题复习
    1、新建命名空间,在该命名空间中创建一个pod•命名空间名称:cka•pod名称:pod-01•镜像:nginx命令行配置:kubectlcreatenamespaceckakubectlrunpod-01--image=nginx--namespace=ckayaml配置:apiVersion:v1kind:Podmetadata:name:pod-01namespace:ckaspec:......
  • 复习课7 常量
    一.导入我们之前就说过生活中是有很多变化与不变的量的,我们将变化的量称为变量,将不变的量称为常量常量在生活中也有很多,如:血型、性别(不考虑特殊情况)、身份证号,那么在C语言中有哪些常量呢?二.C语言中常量的分类字面常量const修饰的常变量#define定义的标识符常量枚举常量接下来我将为......