摘要: 1. 树上倍增 f[i][k] 表示节点 i 向上第 2k 个节点。mx 是树的最大深度。 预处理: 先 DFS 得到 f[i][0] ,然后: 求 LCA : 2. 欧拉序+RMQ DFS 得到树的欧拉序列,记录每个点在欧拉序列中第一次出现的位置 pos[i] 。 x, y 的 LCA 即为欧拉序 阅读全文
posted @ 2018-07-12 19:54 derchg 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 1. 抢气球 1 #include <stdio.h> 2 #include <algorithm> 3 #include <queue> 4 5 using namespace std; 6 7 const int _N = 120000; 8 9 struct data { 10 int v, 阅读全文
posted @ 2018-07-12 18:47 derchg 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 这是 hzwer 巨佬的一场训练赛。 1. 榴莲罐头 单调队列或者纯贪心都是 O(n) ,后者空间是 O(1) 更好…… 1 #include <cstdio> 2 #include <deque> 3 4 using namespace std; 5 6 typedef long long LL; 阅读全文
posted @ 2018-07-12 09:53 derchg 阅读(126) 评论(0) 推荐(0) 编辑
摘要: LCT 模板题,分块也很优秀。 分块做法 维护每个点到第一次跳到下一个块时的跳跃次数,并记录其跳到下一个块的第一个点。 注意常见的分块玄学操作 n = min(sqrt(N), 100) 和 n = sqrt(N)*1.23 。 1 #include <stdio.h> 2 #include <al 阅读全文
posted @ 2018-07-12 09:45 derchg 阅读(131) 评论(0) 推荐(0) 编辑