首页 > 其他分享 >lxl学长讲课笔记

lxl学长讲课笔记

时间:2023-11-23 22:11:06浏览次数:33  
标签:线段 对于 讲课 信息 学长 复杂度 区间 lxl 均摊

lxl 学长讲课笔记

常数种可能性的状态

通过预先处理多种状态的信息,从而快速的转换状态。

经典操作:flip

分析信息的思路

  • 利用线段树

利用线段树的时候,如何合并两个分支区间的信息,我们需要有如下注意:

  1. 答案 - 依赖的信息,继续的依赖,这样就能找到需要维护的东西。这终会产生闭包。

  2. 合并时,我们只需要考虑跨过分治区间对于答案的贡献,对于不同的情况进行讨论即可。

线段树其实就是十分自然的序列上的分治树,所以我们处理线段树的过程也可以看作分治的过程。

只是在这里,两个分治区间的信息可以快速地合并罢了。

  • 对于不独立信息的处理

独立的信息指区间 \(\max\) 区间和问题。

不独立的如配对相关问题,经典的有前驱后继,或者 \(a_i + a_j = w\) 的问题。

一种做法是离线进行扫描线,但是不能带修,一种是强行进行高位扫描线,也就是莫队,可以带修,但是复杂度可能无法接受。

然而更好的做法我们需要尝试将不独立的信息变的独立

  1. 配对问题中合理的利用 pre 会有奇效!

  2. 配对问题可能出现 \(O(n)\) 影响 pre 的情况,我们需要合理利用 支配 的性质来减少不必要的影响。

例如 P6617 查找 Search 中有很好的体现。

  • 在什么地方使用数据结构?

一般来说,我们有两种方案:

  1. 对于信息建立数据结构,在询问时对其进行查询。
  2. 对于询问建立数据结构,利用信息更新最终答案。

CF702F T-Shirts 中有很好的体现,这两种思路都可以。

小技巧

颜色段均摊

对于 ODT 来说,其区间推平的复杂度是 \(O((n + m) \log n)\) 的,十分的优秀,但是对于查询来说,我们需要通过分块或者线段进行辅助,从而达到正确的复杂度。

有一种特殊情况例外:
如果推平和查询同时发生,意味着推平时对于每一段查询的复杂度是没有问题的!

判断是否可以均摊,我们可以看是否能够构造出一个操作序列使得序列复原,如果可以复原,那么基本是不可以均摊的。

或者我们看是否能找到一个量,不增,或者不减,或者有一个神秘的上界。

更详细的文章:# 算法学习笔记(42): 颜色段均摊

容均摊

对于 \(\sqrt x\) 的操作,可能可以通过 \(\max - \min\) 的势能来搞定。

如果发现极差会变化:\(\max - \min \ne \sqrt{\max} - \sqrt {\min}\),那么便可以暴力递归下去修改,否则可以整体打一个 \(\sqrt x\) 的标记。对于区间加减,在线段树上至多影响 \(O(\log n)\) 个节点的势能,所以复杂度并不会有问题。

类似的操作有 \(\lfloor \frac x d \rfloor\),这可以将除法操作变为对于区间的加减操作。

标签:线段,对于,讲课,信息,学长,复杂度,区间,lxl,均摊
From: https://www.cnblogs.com/jeefy/p/17852627.html

相关文章

  • 【数据结构】lxl 的 DS 修炼
    线段树&平衡树用线段树/平衡树维护的序列问题可以分为两类:1.静态型:维护一个类似于\(\sum_{l,r}....\)的值,或者是多次询问区间或全局的一些特征值。2.动态型:支持动态修改和动态询问区间信息的类型。对于静态型,我们通常首先思考怎样求单个区间的答案值,同理,动态型通常先考虑......
  • 动态规划的状态设计 | bot 讲课の补题
    stojames1badcreeperorz.好厉害的题,但是怎么有人补了三天才补完呢?CF1810GTheMaximumPrefix线性dp,怎么有bot说题目难度在*2400~*2800之间结果开场就是*3200啊/youl尝试直接正着做,发现要记\(f_{i,j,k}\)表示前\(i\)个数,最大前缀和是\(j\),当前前缀和是\(k\)......
  • 国庆NOIP储备营讲课笔记
    Day1(基础算法)讲师:余快枚举法例题1给定一个数\(x\),判断\(x\)是不是质数。朴素算法:枚举\([2,x−1]\)之间所有的整数\(i\),逐个判断\(x\)是否被\(i\)整除,若都不能整除则\(x\)是质数,时间复杂度\(O(x)\),搞个\(10^9\)直接卡过。该怎么优化呢?优化枚举范围:只需枚举到......
  • 2023/9/27 讲课用
    杂谈表达式首先来明确一些概念值(value)即为一个静态的数据。值可以是整数,浮点数,字符,字符串等变量(variable)可以形象地理解为,存储值得容器。变量有诸多类型,一般而言,变量只能存储对应类型的值。inta=0;“我向系统声明:我需要一小块内存,来存储一个整数变量,变量的值为\(0......
  • 数论笔祭 - 林学长的第二数学
    林学长讲课笔记极限\(\lim_{x\tox_0}f(x)\)考虑运算法则:一般来说,函数的和差商积的极限等于函数的极限的和差商积。但是例外:\[\lim_{x\to3}\frac{x-3}{x^2-9}\]考虑极限约去\(x-3\)得到:\[\lim_{x\to3}\frac1{x+3}=\frac16\]如果约不掉?但是……......
  • 2023.8.20学长分享
    Exeabow_sky点分治树上路径统计或最优化。(无根树)找重心,分别考虑子树,标vis。复杂度O(nlogn)路径合并信息。对于较多次的查询可以用点分树;或离线,一次点分治处理完。[CSP-S2022T4]也可点分治。对于k=2,对链在点分治中维护信息,离线;对分治中心h,对两子树中点a,b,做like-DP,......
  • 学长 Rounds
    FengwuRound-CSP模拟8大概是最水的一次模拟赛了。T1Coprime2原题:ABC215D直接质因数分解,复杂度为\(O(n\logn)\)。T2DistMax2原题:ABC215F一眼二分,考虑如何在\(O(n)\)时间内实现check函数。将每个点按\(x\)为关键字排序,然后双指针,在\(x\)满足的条件下检......
  • 并查集-讲课内容补全(未完
    施工中......先在这里给出我的并查集模板以下为比较常用的路径压缩intf[MAXN],n,m;voidclean(){for(inti=1;i<=n;i++)f[i]=i;}intfind(intx){if(x!=f[x])f[x]=find(f[x]);returnf[x];}voidadd(intx,inty){intfx=find(x),fy=find(y......
  • 五一集训讲课内容(4.28-5.2)
    五一集训讲课内容(4.28-5.2)比赛注意开头写文件读入、写出的两行代码。freopen("文件名.in","r",stdin);freopen("文件名.out","w",stdout);内存限制为256MB最多开6e7的int型数组内存限制为512MB最多开1e8的int型数组1e9的数组绝不能开!!!时间限制1000ms,for循环最多循环1e9......
  • APIO2023 讲课落实
    字符串咕咕咕字符串咕咕咕母函数和动态规划相关运用\(\text{CF755G}\)洛谷云剪贴板界面。考虑设计一个动态规划。设\(f_{i,j}\)表示考虑完了前\(i\)个球,目前分了\(j\)组的方案数。有转移如下。\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}+f_{i-2,j-1}\]设\(F_i(x)=\sum_{p......