随笔分类 - 数据结构
摘要:似乎所有的线段树分治题都能被 \(LCT\) 平替掉? 一眼动态树,直接 \(LCT\)。 Connect x y 操作用 \(link(x,y)\) 实现,Destroy x y 操作用 \(cut(x,y)\) 实现,Query x y 操作用 \([find(x)=find(y)]\) 实现。
阅读全文
摘要:首先,\(LCT\) 一般指疏松结缔组织。 疏松结缔组织是指一种柔软而富有弹性的结缔组织。主要填充在各器官或组织间的间隙中,如剥制动物标本时,将皮肤拉开,就可见到薄而透明的疏松结缔组织。 对不起,刚才生物同志走错片场了。 \(LCT(Link\ Cut\ Tree)\),是一种可以解决动态树问题的数
阅读全文
摘要:啊啊啊啊啊啊啊啊啊啊啊我终于改完啦啊啊啊啊啊啊啊。 因为没有在最开始的时候将所有点设置为已经重构的,所以直接 \(R15-R70\) 间卡了两三天。 似乎也是我第一次大规模使用指针了。 这道题假如只有一次询问,就是一道简单淀粉质,直接在根节点建立平衡树,记录 \(r_x-dis(x,rt)\),然后
阅读全文
摘要:妙不可言!妙绝人寰! 单点修,区间查,包是线段树的。考虑如何比较两节点大小。 考虑二叉搜索树,我们只要再给每个节点附一个权值,就可以比较了! 注意力相当惊人的注意到,假如给每个点一个区间 \([l_x,r_x]\),左右儿子分别表示为 \([l_x,\lfloor\frac{l_x+r_x}2\rf
阅读全文
摘要:妙不可言!妙绝人寰! 单点修,区间查,包是线段树的。考虑如何比较两节点大小。 考虑二叉搜索树,我们只要再给每个节点附一个权值,就可以比较了! 注意力相当惊人的注意到,假如给每个点一个区间 \([l_x,r_x]\),左右儿子分别表示为 \([l_x,\lfloor\frac{l_x+r_x}2\rf
阅读全文
摘要:突然想买一瓶,然后喝上几口。(不要命的想法) 动态全局 \(k\) 大想到权值线段树上二分。 由于要存储二维的点,所以得用到我们神通广大的 \(KDT\) 了。 那么想到权值线段树套 \(KDT\) 这种算法了。 笔者用的是二进制分组的写法,插入单次均摊时间复杂度是 \(O(\log^3n)\),查
阅读全文
摘要:突然想买一瓶,然后喝上几口。(不要命的想法) 动态全局 \(k\) 大想到权值线段树上二分。 由于要存储二维的点,所以得用到我们神通广大的 \(KDT\) 了。 那么想到权值线段树套 \(KDT\) 这种算法了。 笔者用的是二进制分组的写法,插入单次均摊时间复杂度是 \(O(\log^3n)\),查
阅读全文
摘要:突然想买一瓶,然后喝上几口。(不要命的想法) 动态全局 \(k\) 大想到权值线段树上二分。 由于要存储二维的点,所以得用到我们神通广大的 \(KDT\) 了。 那么想到权值线段树套 \(KDT\) 这种算法了。 笔者用的是二进制分组的写法,插入单次均摊时间复杂度是 \(O(\log^3n)\),查
阅读全文
摘要:突然想买一瓶,然后喝上几口。(不要命的想法) 动态全局 \(k\) 大想到权值线段树上二分。 由于要存储二维的点,所以得用到我们神通广大的 \(KDT\) 了。 那么想到权值线段树套 \(KDT\) 这种算法了。 笔者用的是二进制分组的写法,插入单次均摊时间复杂度是 \(O(\log^3n)\),查
阅读全文
摘要:注:\(K-D\ Tree\) 的应用中由于大量用到了 \(dfs\) 剪枝,所以通常不是正解。但是由于他相当好写,而且通常跑的不慢,所以也广为流传。感觉像是一种半骗分思路。下文简称其为 \(KDT\)。 一、\(K-D\ Tree\) 我们都知道 \(2D,3D\) 表示二维、三维,所以 \(KD
阅读全文
摘要:\(55+42+50=147,rk2\)。 T1 序列 直接上吉司机线段树,特判 \(+\ 0\) 情况即可。 我猜测时间复杂度是 \(O(n\log^2n)\)。 #include<bits/stdc++.h> #define int long long using namespace std;
阅读全文
摘要:好题,又学两个思路。 先把问题变简单一点,去掉深度限制,那么有两种做法: 经典的前驱后继转化到二维数点。 颜色相同的点按 \(dfs\) 序排序,每个点 \(+1\),相邻两点 \(lca-1\)。转化为区间求和。 第二种相对实现简单。 假如加上深度,我们可以离线问题,按深度顺序加点。 要在线的话,
阅读全文
摘要:好题,又学两个思路。 先把问题变简单一点,去掉深度限制,那么有两种做法: 经典的前驱后继转化到二维数点。 颜色相同的点按 \(dfs\) 序排序,每个点 \(+1\),相邻两点 \(lca-1\)。转化为区间求和。 第二种相对实现简单。 假如加上深度,我们可以离线问题,按深度顺序加点。 要在线的话,
阅读全文
摘要:相当好的题目,虽然和我前几天出的题重了qwq。 \(lmx\) 是我们的红太阳,没有他我们就会死!!! 暴力枚举一个端点,然后用可持久化 \(01\ Trie\) 或者离线 \(Trie\)(当然这题用不了,但不强制在线的话是可以的)得到答案。时间复杂度 \(O(nm\log n)\),过不了,考虑
阅读全文
摘要:首先发现 \(p_x\times dis(x,y)+q_x\) 异常像是能斜率优化的样子,那先把求 \(f_x\) 的式子写出来(下设 \(d_x\) 表示 \(x\) 到根的距离): \[f_x=\min_{lca(x,y)=y,y\ne x}(p_x\times(d_x-d_y)+q_x+f_y
阅读全文
摘要:首先 \(S(u)\) 显然是 \(u\) 的子树。 假如 \(u\) 是定点,问题转化为区间求平方和,十分简单。 于是我们用线段树维护区间平方和,支持区间加,然后离线问题,在 \(u\) 的位置处理即可。线段树从 \(fa\) 转移到 \(u\) 是极度简单的。 时间复杂度 \(O(n\log n
阅读全文
摘要:第一道函数交互 \(+\ luogu\) 最劣解,这不得发篇博客鼓励一下。 引理 \(1\):若 \(p_{i,j}>0,p_{i,k}>0,p_{j,k}=0(i\ne j\ne k)\),则不合法。 正确性显然。 引理 \(2\):若 \(p_{i,j}=3\),则不合法。 证明:设三条路径为
阅读全文
摘要:考虑当没有强制在线时,容易想到一个点 \(i\) 所影响的区间 \([l,r]\) 满足 \(pr_i<l\le i,i\le r<nx_i\)。显然可以转化为矩阵修改,单点求 \(\max\) 的问题。那扫描线 \(+\ set\) 轻松拿下。 强制在线就把线段树换成主席树就可以了。注意这里不能下
阅读全文
摘要:考虑当没有强制在线时,容易想到一个点 \(i\) 所影响的区间 \([l,r]\) 满足 \(pr_i<l\le i,i\le r<nx_i\)。显然可以转化为矩阵修改,单点求 \(\max\) 的问题。那扫描线 \(+\ set\) 轻松拿下。 强制在线就把线段树换成主席树就可以了。注意这里不能下
阅读全文
摘要:考虑当没有强制在线时,容易想到一个点 \(i\) 所影响的区间 \([l,r]\) 满足 \(pr_i<l\le i,i\le r<nx_i\)。显然可以转化为矩阵修改,单点求 \(\max\) 的问题。那扫描线 \(+\ set\) 轻松拿下。 强制在线就把线段树换成主席树就可以了。注意这里不能下
阅读全文