给出一个堆贪心解法 记点$u$的深度为$d_u(d_1=0)$,父亲为$f_u$,拥有儿子数量$es_u$。 首先找到每个点的最远延伸点(点$u$的最远延伸点记为$v_u$),借助树上倍增即可。 接下来是贪心方法 在每次链连接完后删掉这些点,那么每条链的尾端一定是一个叶子。 那么就想办法找出目前贪心 ...
分类:
其他好文 时间:
2020-02-21 14:47:57
阅读次数:
61
T1 dp+多项式。(喜欢的类型) $dp[i][j]$已经插入了$i$个区间,当前的序列长度为$j$的方案。 目标:$dp[m][n]$。 初始化:$dp[0][0]=1$ 转移: $$dp[i][j]= \begin{cases} dp "i 1][j]+\sum\limits_{k=0}^{j ...
分类:
其他好文 时间:
2020-02-19 21:12:25
阅读次数:
75
背景随着微服务化的系统越来越多,系统间的交互也呈现几何倍增的趋势,系统间面临一致性问题越来越突出。为了保障服务提供方与服务消费方的一致性,特别是面临最大努力通知型或补偿性的技术需求,服务化前做法是服务提供方需手写重试策略及各种配置->持久化消息->定时去处理消息等。它带来的以下问题是:1.客户端(新 ...
分类:
其他好文 时间:
2020-02-18 12:41:15
阅读次数:
117
后缀数组Da模板: 1 /* 2 后缀数组倍增法Da板子 3 */ 4 #include <cstdlib> 5 #include <cstring> 6 #include <cstdio> 7 #include <algorithm> 8 using namespace std; 9 const ...
分类:
编程语言 时间:
2020-02-17 16:23:51
阅读次数:
79
题目链接 题意如题 做法 先做一遍最小生成树 枚举添加每一条非树边的情况,每一次构成一棵基环树,在环上找一条最长边(如果等于该非树边就用环上的严格次小边) 倍增LCA,倍增预处理的时候顺便维护严格次大值和最大值(注意细节) (如果是非严格次小生成树则只需要维护最大值即可) 代码 #include < ...
分类:
其他好文 时间:
2020-02-17 12:41:29
阅读次数:
88
"Problem Link" $dis(u,v)$ 表示 $u$ 到 $v$ 在原来那棵树上的距离,可以用倍增lca $O(\log n)$ 求 从 $a$ 走到 $b$ 不走新边,那么距离 $len_1=dis(a,b)$ 因为树上的边可以随便走,所以只要 $len_1$ 与 $k$ 同奇偶并且 ...
分类:
其他好文 时间:
2020-02-16 12:56:30
阅读次数:
74
```cpp const int MAX = 100000; vector G[MAXN + 5]; int dep[MAXN + 5], fa[MAXN + 5][20 + 1]; void dfs(int u, int p) { dep[u] = depth[p] + 1; fa[u][0] =... ...
分类:
编程语言 时间:
2020-02-16 12:55:01
阅读次数:
72
LCA(least common ancestors)最近公共祖先 指的就是对于一棵有根树,若结点z既是x的祖先,也是y的祖先(不要告诉我你不知道什么是祖先),那么z就是结点x和y的最近公共祖先。 定义到此。 那么怎么求LCA? 对于朴素思想,就是我要一步一步往上爬。。一步一步走。先把结点x和y整到 ...
分类:
其他好文 时间:
2020-02-15 19:20:38
阅读次数:
91
原本遇到判断字符串中是否含有重复元素的问题总是使用for循环遍历进行判断,这一方法则需要O(n3)的时间复杂度,如果本身方法处于几个循环中,就会指数倍增加时间复杂度。类似于如下代码: String[] a = s.split(""); int max = 1; for(int i = 0; i < ...
分类:
其他好文 时间:
2020-02-13 18:53:02
阅读次数:
100
EMCCD 即电子倍增CCD,是探测领域内灵敏度极高的一种高端光电探测产品。 在光子探测领域的应用发展对探测器灵敏度的要求不断提高,EMCCD (Electron-Multiplying CCD)技术对愈发严苛的需求作出了答复。 应用领域 在诸如单光子探测、多维(4或5维度)活细胞显微观察、钙离子流 ...
分类:
其他好文 时间:
2020-02-13 16:36:15
阅读次数:
116