摘要:
回顾一道题 阅读全文
摘要:
Statement 区间涂颜色 区间颜色数 Solution \(O(\text{polysqrt})\) 略。 \(O(\text{polylog})\) 颜色段均摊有两层含义: 随机数据下:任意时刻的颜色段个数期望 \(O(\log n)\) 非随机数据下:每次推平时访问的颜色段个数均摊 \(O 阅读全文
摘要:
主要是忘了复杂度证明,所以来记一记 int merge(int u, int v, int l, int r) { if (!u || !v) return u | v; if (l == r) return a[u].sum += a[v].sum, u; a[u].lc = merge(a[u] 阅读全文
摘要:
随时更新 柯朵莉树,Assign,要先 Split(r + 1) 再 Split(l) 而不是先 Split(l) 再 Split(r + 1) 解析 1 如果 \(l,r+1\) 在同一个颜色段内,你 Split(l) 再 Split(r + 1) 时 l 这个颜色段的指针已经被删除。 阅读全文
摘要:
Solution 首先只考虑回文串的答案;我们重点考虑的是偶回文串 结论:对于偶回文串 \(u\),从其最长的长度小于等于他的一半的回文后缀,或其父亲转移过来,一定是最优的 证明: 设 \(u\) 的一个回文子串为 \(v\)(不是父亲),你要让 \(v\to u\) 的转移最优 首先 \(v\) 阅读全文
摘要:
Solution 线段树套 trie,秒了! \(O(n\log^2 n)\) Code #include <bits/stdc++.h> using namespace std; #define rep(i, j, k) for (int i = (j); i <= (k); ++i) #defi 阅读全文
摘要:
Statement 一棵树,每个节点上有一个集合,每个儿子集合由父亲集合增加一个点 \((x_i,c_i)\) 或删除一个点得到。根节点集合为 \(\{(0,0,0,c_0)\}\) 多次询问,每次问 \(u\) 点的集合内,\(\min\{(x_i-x)^2+c_i\}\) Solution 首先 阅读全文
摘要:
Statement 求平面最近点对的距离,距离定义为欧几里德距离。 Solution 考虑按 \(x\) 排序,分治计算 先往左右递归,设得到的答案为 \(d\),当前算跨过中点的答案,那么答案 \(\ge d\) 的点对可以不用枚举 设中点为 \(m\) 对 \(i\in[l..m]\),\(x_ 阅读全文
摘要:
Statement 维护一个括号序列,有以下操作: 区间覆盖 区间翻转 区间反转(左括号变右括号,右括号变左括号) 区间问最少改多少位能使括号序列合法,保证有解 Solution 单纯没想到答案怎么算。。。 首先一段括号序,如果消除中间的所有匹配,最终一定形如 ))))(((,这个信息是可合并的 设 阅读全文
摘要:
Solution 单次二分:问“重要度 \(\ge x\) 的所有操作,且 \(t\) 时间点还存在的所有操作中,是否有不经过这个点的” 整体二分:保持操作、询问按时间有序,即预先按时间排序,下传时保持有序; 对于一次 Solve,对于所有重要度 \(\ge mid+1\) 的操作(加入、删除),考 阅读全文
摘要:
Solution 单次二分:二分时间,做这个时间前的所有操作,然后线性统计。 注意到可以整体二分,直接整体二分是 \(O(n\log^2 n)\)。 考虑扫描序列,用线段树维护每个时间段内该位置的增加值,差分一下可以实现。 将这棵线段树持久化一下,一个国家所有位置同时二分即可 \(O(n\log n 阅读全文
摘要:
Statement 给出 \(n\) 个数的序列 \(\{a_i\}\),接下来 \(m\) 秒中每一秒会有一个数发生变化,然后恢复。 问最长的子序列长度,使得任意时刻这个子序列不下降。\(n\le 10^5\) Solution 设 \(b_i\) 为 \(i\) 最小能变成的数,\(c_i\) 阅读全文
摘要:
Solution 整体二分板子题 vector 太好写了111 #include <bits/stdc++.h> using namespace std; #define rep(i, j, k) for (int i = (j); i <= (k); ++i) #define reo(i, j, 阅读全文
摘要:
Statement 先把串 reverse,多次给 \(l,r\),求 \[ \max_{l\le i<j\le r}\{\text{LCP}(i,j)\} \]Solution \(\text{sqrtlog}\sim\text{sqrt}\):莫队 + 线段树 / 树状数组 / set,用 SA 阅读全文
摘要:
我觉得这东西有必要记一下,因为光是看 PPT 很难自己写出代码……具体步骤相关啥都没写。 另外学这个东西也不是很必要…… Solution 我们需要一个维护最小值、最小值编号,支持区间加的 LCT。需要支持以下操作: \(find\_root(u)\) \(link(u,v)\) \(cut(u,v 阅读全文