- 2024-11-19【学习笔记】dp 优化
决策单调性优化目前只知道应用于形如\(f_i=min{g_j+w(j,i)}\)的式子。四边形不等式对于函数\(f(x,y)\),若其对于任意\(l_1\lel_2\ler_2\ler_1\)有\(f(l_1,r_2)+f(l_2,r_1)\lef(l_1,r_1)+f(l_2,r_2)\),我们称其满足四边形不等式。简记为交叉不大于包含。斜率优化目前
- 2024-05-14C121 李超树+DP P4655 [CEOI2017] Building Bridges
视频链接:C121李超树+DPP4655[CEOI2017]BuildingBridges_哔哩哔哩_bilibili LuoguP4655[CEOI2017]BuildingBridges#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;#definelllonglong#definelsu<<
- 2024-04-06[DS 小计] 李超线段树
前言大家好啊,今天讲的是LCT(李超Tree)(bushi错了错了。这两不是一个东西。概念李超树能干什么。插入一条直线/线段单点查询当前点的峰值(最大最小均可)你会说:OI中有什么是和斜率相关的吗?有,那就是斜率优化。关于斜率优化可以看这个。你会说:你说的对,静态的dp
- 2024-03-24斜率优化&李超树
斜率优化dp1.写出dp方程,并让其变为线性其中可能需要对性质的重要分析(难点)式子一般长这个样$$f(i)=min/max(h(j)+a(i)b(j)+g(i))$$2.模板化的,分离变量具体的,先忽略\(min/max\)(其实相当于选择一个最优的\(j_0\))$$f(i)=h(j_0)+a(i)b(j_0)+g(i)$$把只与\(j_0\)相关的
- 2024-02-10李超树
李超树(不得不抱怨一下我现在正在用的这个键盘,好难打,如果有啥子笔误请指出)基础支持在线插入一条线段,一条直线,插入线段的极限时间复杂度是\(O(log^2)\),插入一条直线的时间复杂度是\(O(log)\)的。支持查询一个已知\(x\)的竖线与插入的直线段的交点的最值。实现与普通线段树
- 2023-10-24关于斜率优化的一些杂谈
这里并不是在详细地介绍斜率优化,只是一些瞎扯,想真正系统学习斜率优化的话请去阅读其他文章。斜率优化是众多dp优化方式中较为常见的一种,让我们不妨回忆一下它的形式:\[dp(i)=\min/\max(a(i)\timesb(j)+c(i)+d(j)+C)\]上式中,\(a,b,c,d\)分别为只跟\(i\)或\(j\)相关的函数
- 2023-10-19斜率优化相关
记一下。形如\(f_i=\min/\max\{f_j+a_ib_j+c_i+d_j+e\}\)的式子可以使用斜率优化。如果斜率有单调性,可以使用单调队列。如果没有,可以使用李超树或者cdq分治。单调队列暂鸽。没有单调性,使用李超树。为方便记录,只讨论\(f_i=\min\{f_j+a_ib_j+c_i+d_j+e\}\),\(\max\)同理
- 2023-09-29李超树
模板:P4097先考虑插入直线在每个节点存一个\(f_i\)表示一条直线。需要保证\(u\)及其祖先的\(f\)中有在\(u\)区间的中点处取得极值的那条直线。考虑更新。注意到一条直线完整覆盖一个区间时,它不需要下传,因为查询它的儿子时必然经过它本身,也就能统计这条直线的贡献。到
- 2023-08-26李超树
去ZR的时候接触到的,然后来填坑。参考资料:李超树-XYini/bx。李超线段树初步-牛客竞赛浅谈李超线段树及其应用-tommymio应用李超线段树最经典的应用就是维护一个二维平面直角坐标系,支持动态插入线段或者直线,询问与直线\(x=x_0\)相交的已插入线段中交点\(y\)
- 2023-08-09李超树
李超数支持动态插入线段/直线,查询单点极值。算法思想排除不可能成为最优解的,维护在当前区间能成为最优解的线段,即该线段在当前区间的某个取值上有最优解。查询的时间复杂度是\(O(\logn)\)的,修改时通过替换和下放,也能达到\(O(\logn)\)的复杂度,区间修改能达到\(O(\log^2n
- 2023-07-182023 杭电多校 Day1
1009签到,队友哥切的,没看1002\(f(x,0/1/2)\)表示当前点没有覆盖/覆盖/放置观察点子树内最小代价,简单转移即可。f[x][1]=1e18;f[x][2]=a[x];f[x][0]=0;for(inty:e[x])if(y!=fx){ dfs(y,x); statici64g[3]; g[0]=g[1]=g[2]=1e18; g[1]=f[
- 2023-07-13李超树浅谈
李超树是一个可以多个分段一次函数,并取某个端点上所有一次分段函数的最值。基本李超树需要维护两个操作:在\([l,r]\)加入一条线段。询问在\(k\)处的最值。李超树中,每个节点我们存储的函数编号为在这个节点代表区间中点取得最值的函数编号。插入时,我们首先向线段树一样找
- 2023-06-26P2305 [NOI2014] 购票
P2305[NOI2014]购票题意今年夏天,NOI在SZ市迎来了她三十周岁的生日。来自全国\(n\)个城市的OIer们都会从各地出发,到SZ市参加这次盛会。全国的城市构成了一棵以SZ市为根的有根树,每个城市与它的父亲用道路连接。为了方便起见,我们将全国的\(n\)个城市用\(1\simn\)
- 2023-04-282023-4-27 #52 来看这万千旧梦
323AT_xmascon21_cCountMe先做没有问号的情况。把问题倒着做,每次删只能删连续段的末端\(0\),或是连续段的开头\(1\),若我们在开头插入\(0\),在结尾插入\(1\)并强制这些不能删,那么我们能将\(0\)连续段与\(1\)连续段匹配,操作可以看作将一个\(01\)变成\(0\)或是\(1\)
- 2022-12-01CDQ 分治,李超树与斜率优化
P4027,及一类类似问题:给定\(a_i,b_i,x_i,y_i\),对于每个\(i\)求出\(f_i=\max\limits_{j=1}^{i}\{a_ix_j+b_iy_j\}\)先说一下一类经典问题的做法:给定\(n\)个二
- 2022-10-25李超树(斜率优化无脑DS)
如果我们需要一个数据结构来维护多个线段在一个点上的最值,那我们就可以使用李超树来完成这个事情。李超树的每个区间记录的是中点值最大的一条线段。如何做到呢?1、插入s
- 2022-10-10【闲话】2022.10.10
真的帮我妈登上了cnblogs好诶!今天Accoders考试T3T4真的不想改了除非我学到那一部分然后干了干李超树我完全明白了(不是继续搜索终于知道A*的用法了我好菜
- 2022-09-28To Do List
再不卷就退役了!!NKOJ赛题表2:C可变地图(DDP)作业表4:P01子序列(DDP)作业表5:a小Y的背包计数问题(根号分治)作业表6:D盒子与玩具(容斥)E自助小