首页 > 其他分享 >2024.10.1 总结(集训;数据结构 主要是线段树)

2024.10.1 总结(集训;数据结构 主要是线段树)

时间:2024-10-01 21:48:19浏览次数:9  
标签:二分 树子 2024.10 log 线段 离线 结点 数据结构

XK 又来给我们讲课了。开心!

1. Baka's Trick

两种理解:

  • 双栈模拟队列。
  • [找到若干个划分点,使得每个区间包含恰好一个划分点。维护划分点到划分点段的前缀、后缀信息。在在线的实现中,在队列中维护仅仅一个划分点,维护它到前面每个点和它到后面每个点的信息。当这个划分点出队时,把队列中最后的点作为新的划分点。画图理解。](???)

在网上意外发现的(好像是暴力重构):https://www.cnblogs.com/xiaoziyao/p/17413029.html

2. 在线 & 离线

  • 在线:比离线多了时间维。时间维 -> 对操作(包括询问)顺序的限制。
  • 离线:去掉时间维。

3. 01 反转的一个 trick

用 2 棵平衡树来维护,一棵只维护是 0 的点,另一棵只维护是 1 的点。

01 反转操作相当于交换两棵平衡树上的某段区间。

4. 线段树区间二分

线段树子树二分直接做即可。但线段树区间二分有区间的限制,不好直接做,考虑转成线段树子树二分。

于是我们把这段区间在线段树上对应的 [log](?)个结点取出来。依次看答案是否在当前结点,如果不在就接着看下一个结点,如果在就直接在以这个结点为根的子树里二分(线段树子树二分)即可。

时间是单 log 的,因为找线段树子树二分的起点是 log,线段树子树二分也是 log。

实际实现不用真正把区间对应的 [log](?)个结点都抓出来,外层的找起点可以在线段树上直接找。见下面例题我的代码或我参考的那篇题解的代码。

例题:P11071 「QMSOI R1」 Distorted Fate

5. 空间优化

  • 转成只有 01[(或者类似,总之很小[/很少](很少 -> 离散化转成很小))](?),用 bool 之类的东西来存。只有 01 就可以直接用 bitset 了。(缩小值域)
  • 上面一条的一个另外的东西,比如三进制的状态离散化之后可以转成二进制(好像是插头 DP 板子里[要](???)用)。(缩小定义域)
  • 复用优化空间。
  • 离线复用优化空间。

6. 关注点权正负

[如果点权都是正的(或者非负),想想贪心。](???)

例题:[P10641](?)。

7. 全局 xor 有结合律,还能拆

8. 树上距离,转成 dep 的和差(dep 不一定是深度,可以把 和根之间的路径上的边权和 作为深度)。有时需要分讨 lca。

lr 推的题:https://qoj.ac/problem/6504

标签:二分,树子,2024.10,log,线段,离线,结点,数据结构
From: https://www.cnblogs.com/huangkxQwQ/p/18443851

相关文章

  • 论文总结1--基于深度强化学习的四足机器人步态分析--2024.10.01
    四足机器人的运动控制方法研究1.传统运动控制-基于模型的控制方法  目前,在四足机器人研究领域内应用最广泛的控制方法就是基于模型的控制方法,其中主要包括基于虚拟模型控制(VirtualModelControl,VMC)方法、基于零力矩点(ZeroMomentPoint,ZMP)的控制方法、弹簧负载倒立摆算法......
  • 《数据结构(刘大有)》学习(6)
    系列文章目录一、绪论二、顺序表、链表三、堆栈、队列四、数组五、字符串六、树目录树的基本概念树的定义树的特点树的相关术语度层数高度路径二叉树定义特点定理满二叉树定义特点完全二叉树定义特点二叉树的存储结构顺序存储结点结构优点缺点 链式存储 结点结构三......
  • 力扣(leetcode)每日一题 1845 座位预约管理系统| treeSet和priority Queue的区别|线段树
    之前发过一篇,感觉还有深挖的地方,于是又补充一些信息这题目虽然是middle难度题目,要解答出来是只要easy的时间,但是深挖可以有hard的难度题解1可以帮助复习线段树的使用,题解2可以复习一下java基础知识题解1线段树这是自己憋出来的线段树classSeatManager{......
  • 2024.10 训练日记
    我们将难度分为\(5\)个等级:\(\color{grey}\bigstar\)简单题,根本不配进入NOI的考场,做着玩玩。或者为模板题。\(\color{green}\bigstar\)签到题,在NOI赛场上强银选手几乎人人都会,如果赛场上不会的话对冲银的影响是非常大的,要避免。\(\color{blue}\bigstar\)中等题,在NOI......
  • 数据结构~~链表
    目录一、链表的概念二、单链表1.单链表的结构2.单链表的接口实现 2.1、动态申请节点2.2、单链表打印 2.3、摧毁单链表 2.4、单链表尾插 2.5、单链表的头插 2.6、单链表的尾删 2.7、单链表的头删 2.8、单链表在pos位置之前插入x2.9、单链表删除pos位置的值......
  • redis的数据结构,内存处理,缓存问题
    redisObjectredis任意数据的key和value都会被封装为一个RedisObject,也叫redis对象:这就redis的头信息,占有16个字节redis中有两个热门数据结构1.SkipList,跳表,首先是链表,和普通链表有以下差异:元素按照升序排列存储节点可能包含多个指针,指针跨度不同那么跳表的特点有以下:......
  • Interval GCD(单点修改线段树)
    细节不少//根据更相减损法gcd(x,y)=gcd(x,y-x)//推广到三项为gcd(x,y,z)=gcd(x,y-x,z-y)//可以推广到n项#include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglong......
  • 【数据结构】链表(2)
     【LinkedList的模拟实现】这是java中的一个集合类,可以当成链表来使用,作为链表时,它视为包含三个域,是一个双向链表【构建LinkedList框架】publicclassMyLinkedList{staticclassListNode{publicintval;publicListNodeprev;//前驱......
  • Scala数据结构简单介绍
    数据结构的定义: 1.数组(Array)    (1)定义:        定长数组:newArray[T](数组长度)        变长数组:ArrayBuffer[T]()    (2)示例:        定长数组:valarr1=newArray[Int](3)        变长数组(需提前导包):valarr2=Arr......
  • 数据结构:基本概念及术语
    一、基本概念        在数据结构中,有这样一些基本概念:数据、数据元素、数据项、数据对象,对于它们的具体含义我就不赘述了,在这就简要说明一下它们之间的关系:    首先,我们可以把数据看成一个大集合,那数据元素就相当于这个集合中的一个个元素,然后一些性质相同的......