随笔分类 - 数据结构-动态点分治
摘要:Description 维护一棵树,每次需要执行以下两个操作: 1. 新增一个叶子节点 2. 查询新增的叶子节点与原树上的多少个点满足两点的距离小于等于两点点权相加之和。 强制在线。 Solution 前置芝士 1. 高速平衡树(指除了$Fhq Treap$和$Splay$以外的平衡树,或者你有高超
阅读全文
摘要:PS:这篇博客我是从2019年12月29日开始写的 Task1 N<=1000 $O(n^2)$算法随便乱搞。 源代码 Task2 N<= 1e5 且为链 考虑新加入一个节点后,因为是链,所以每个节点到新加入的节点的距离的增量是相同的。 观察一下两个小精灵能够成为好朋友的条件: \[ dist(i,
阅读全文
摘要:先考虑无修要怎么操作。 发现在无修的情况下,我们可以用一个换根$dp$解决。 那么带修改的情况要怎么办呢? 每次修改重新$dp$一遍不就行了(雾。 好的,让我们先来敲一个$O(N^2)$的$dp$。 #include <bits/stdc++.h> using namespace std; type
阅读全文
摘要:暑假的时候学的算法,太久不用就忘记了代码怎么写。 点分治 就大概的讲一下ba。 将一棵无根树转化为以重心为根的有根树,假设为$p$,那么对于树上的路径,就可以分为两类: 经过根节点$p$ 包含于$p$的某一棵子树内(不经过根节点) 由于重心的性质: 以重心为根,任意一棵子树的大小都不超过整棵树大小的
阅读全文