摘要: CDQ 分治 二元关系 有两个集合 \(A\), \(B\), 他们的笛卡尔积 \(A \times B\) 是 \(|A|\times|B|\) 个点对构成的集合, 即 \(A\) 中的每个元素和 \(B\) 中每个元素组成的有序点对. 定义 \(A \times B\) 的一个子集 \(R\), 阅读全文
posted @ 2021-06-15 20:49 Wild_Donkey 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 左偏树 左倾树 (Left Deviation Tree) 左偏树 (Leftist Trees) 是最常见的可并堆, 初始 \(n\) 个单点作为 \(n\) 个堆, 可以均摊 \(O(logn)\) 地维护 \(n\) 个堆的关系. 不失一般性, 本文只分析小根堆. 外节点 一棵二叉树, 如果把 阅读全文
posted @ 2021-06-15 20:47 Wild_Donkey 阅读(170) 评论(0) 推荐(0) 编辑
摘要: Day10 太难了, 没什么好整了. 那么多人 AK, 我这一场考试只有 \(8'\), 退役了. 阅读全文
posted @ 2021-06-15 20:45 Wild_Donkey 阅读(30) 评论(0) 推荐(0) 编辑
摘要: Day9 博物馆半日游 Tree 这是第几个 tree 了... 规定合法的移动是从一个点走到它的子树中任意一个除它以外的点或是停止移动. 对一棵 \(n\) 个点的树 \(T\), 设 \(f_i\) 为一个节点的合法移动种类数, 求 \(\displaystyle{\sum_{i}f_i}\). 阅读全文
posted @ 2021-06-15 20:42 Wild_Donkey 阅读(53) 评论(0) 推荐(0) 编辑
摘要: Day8 Color 这道题的优化是真的爽, 考场上的代码我存了 \(6\) 个版本, 每个版本都有大改, 有时候能优化掉一个复杂度, 而且越快的版本貌似码量越少. 开始的开始, 写了二维的 DP, \(f_{i, j}\) 表示第 \(i\) 个格子是第 \(j\) 个连续的白格子的方案数, 结果 阅读全文
posted @ 2021-06-07 00:52 Wild_Donkey 阅读(40) 评论(0) 推荐(0) 编辑
摘要: Day7 又是只整了一道题的一天 Tree 给一棵点带权的树, 分成两个集合 \(A\) 和 \(B\), \(A\) 的权值是集合中 \(i\) 是 \(j\) 的祖先, 且 \(V_i > V_j\) 的无序点对数加 \(i\) 和 \(j\) 无直系关系 (不存在一个点是另一个点的祖先) 的无 阅读全文
posted @ 2021-06-06 22:21 Wild_Donkey 阅读(50) 评论(0) 推荐(0) 编辑
摘要: Day6 由于这一天的 T1 过于值得整理, 一道题就干了我 \(10000\) 个字符的篇幅, 所以貌似今天只整了一道题, 但是这道题费了我一整天的时间, 还连累黄文鹤 00:30 都没睡. 这就是 Day6 了. City 给四个点, \(s_1\), \(s_2\), \(t_1\), \(t 阅读全文
posted @ 2021-06-06 13:41 Wild_Donkey 阅读(40) 评论(0) 推荐(0) 编辑
摘要: Day5 Gp 维护一个序列, 支持: 单点修改 (颜色和权值) 从 \(s\) 点往后, 选择一些连续的, 颜色不重复的点, 可以跳过 \(k\) 个点, 也可以直接结束选择, 求最大合法权值和. 考场上写了一个 \(nmlog^2n\) 的做法, 建 \(O(n)\) 棵动态开点线段树, 每个颜 阅读全文
posted @ 2021-06-03 23:07 Wild_Donkey 阅读(53) 评论(0) 推荐(0) 编辑
摘要: Day4 Gp 原题: Joi 2012 Kangaroo \(300\) 个套娃, 容量 \(Contain\) 一定小于体积 \(Size\), 一个匹配是指不存在还有套娃能放在另一个套娃中的情况. 给出每个套娃的 \(Size\) 和 \(Contain\), 求合法的不同的匹配情况数量对 \ 阅读全文
posted @ 2021-06-03 23:05 Wild_Donkey 阅读(132) 评论(0) 推荐(0) 编辑
摘要: Day 3 今天本来能和 \(23\) 个人并列第 \(7\), 但是可惜我最后害怕炸了加了一句特判, 挂了 \(30'\), 可惜. Zuiqianyande 定义 \(f_x\) 是 \(x\) 所有因子的亦或和, 求 \(f_1\) 到 \(f_n\) 的异或和. 本来能拿三天以来第一个正解, 阅读全文
posted @ 2021-06-01 21:58 Wild_Donkey 阅读(35) 评论(0) 推荐(0) 编辑
摘要: Day2 Hamiltonian 基环树和树构成的森林. 每个节点的值可以单向延边流向字节点, 总共可以给任意点增加权值 \(m\), 求最小值最大. 这个题的部分分给的特别多, 暴力打满就有 \(72'\). 场上我一个半小时写了 \(56'\) 的数据点分治, 结果实测只 \(52'\). 最后 阅读全文
posted @ 2021-05-31 23:52 Wild_Donkey 阅读(61) 评论(0) 推荐(0) 编辑
摘要: Day1 Majiang 输入一个 01 串 \(S_1\), 需要输出一个最短的 01 串 \(S_2\), 使得 \(S_2\) 在 \(S_1\) 中从未出现过. 如果有多个可行的解, 你需要输出字典序最小的那一个. 一开始看到后, 立马想到 SAM (只要是和字符串沾点边就能扯上 SAM, 阅读全文
posted @ 2021-05-31 23:51 Wild_Donkey 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 边带权与扩展域 边带权 并查集可以维护物品的集合关系, 只要给并查集的边加上权值, 就能维护某些别的东西. 通过查询一个点到它所在的集合的根的路径的权值总和, 就能得到元素在集合中的相对权值, 合并时, 通过两个集合根之间的边权, 维护两个集合的所有元素的相对权值. 经典题: NOI2001 食物链 阅读全文
posted @ 2021-05-28 17:42 Wild_Donkey 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 树上带修莫队 前置当然是莫队算法, 带修莫队, 树上莫队. 树上带修莫队是这三者的结合体. 因为已经掌握了带修莫队和树上莫队, 所以需要阐述的东西不多, 直接结合经典题糖果公园分析该算法. 题面简述 一棵树, \(n\) 个点, 每点颜色为 \(m\) 中颜色中的一种. \(V_i\) 表示第 \( 阅读全文
posted @ 2021-05-24 21:25 Wild_Donkey 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 树上莫队 & 括号序 在学习了莫队算法之后, 就得到了一个骗分利器 (虽然经常被强制在线卡掉). 接下来将莫队算法推广到树上, 解决部分树上路径询问问题. 括号序 一棵树用括号来表示, 每个子树被一对括号括起来, 举个例子, 比如这颗树: 它用括号来表示是这样的: (( () (() ()) )) 阅读全文
posted @ 2021-05-18 23:32 Wild_Donkey 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 带修莫队 莫队算法只能解决区间查询问题, 但是如果在查询过程中加上单点修改, 一般的莫队就不能做了, 因为这种问题不能简单地将询问离线. 为了能用莫队解决带修改的区间查询问题, 在之前两个维度 (区间左 / 右端点) 的基础上加一个时间维, 对所有询问和修改离线处理. 基本思想 每个修改打一个时间戳 阅读全文
posted @ 2021-05-16 18:16 Wild_Donkey 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 莫队算法入门 离线算法, 解决多次区间询问问题. 算法的条件是一个问题区间 \([L, R]\) 询问的答案可以由 \([L - 1, R]\), \([L, R - 1]\), \([L + 1, R]\), \([L, R + 1]\) 中的任意某个区间的答案以 \(O(1)\) 的复杂度求出. 阅读全文
posted @ 2021-05-12 21:50 Wild_Donkey 阅读(39) 评论(0) 推荐(0) 编辑
摘要: Link/Cut Tree (动态树) 动态树问题, 维护一个森林, 支持但不仅限于如下操作: Query 查询路径信息. Link 连接两个不同树上的点. Cut 断开两点之间的连边. Change 单点修改 给出的解决方案是 Link/Cut Tree, 基于 Splay 的数据结构, 简称 L 阅读全文
posted @ 2021-05-03 22:59 Wild_Donkey 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 一种平衡树, 虽然常数较大, 但是凭着特殊的功能和较小的代码难度成为了很多人初学平衡树的首选. 阅读全文
posted @ 2021-04-29 15:31 Wild_Donkey 阅读(106) 评论(0) 推荐(0) 编辑
摘要: SA-IS 算法在实现线性求后缀数组的同时, 做到了比 DC3 更强的常数效率, 适合在对求后缀数组效率有要求的题目中使用. 阅读全文
posted @ 2021-04-23 21:46 Wild_Donkey 阅读(578) 评论(0) 推荐(2) 编辑
摘要: 校内 ICPC 模拟赛考到了此题,考完后发现考场代码喜提本体最优解 阅读全文
posted @ 2021-04-18 02:22 Wild_Donkey 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 回文树, 又称回文自动机 (PAM), 用来解决字符串的回文子串问题. 阅读全文
posted @ 2021-04-15 19:05 Wild_Donkey 阅读(189) 评论(0) 推荐(1) 编辑
摘要: Gleen K. Manacher (1975), "A new linear-time 'on-line' algorithm for finding the smallest initial palindrome of a string" 阅读全文
posted @ 2021-04-13 18:30 Wild_Donkey 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 广义后缀自动机是后缀自动机和 Trie 结合的产物, 通俗地讲就是在 Trie 上建立后缀自动机. 后缀自动机维护的是单个字符串的信息, 而广义后缀自动机维护的则是多个字符串的信息. 阅读全文
posted @ 2021-04-11 14:10 Wild_Donkey 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 还介绍了一个基于后缀自动机的另一种统计子串出现次数的方法 阅读全文
posted @ 2021-04-09 21:28 Wild_Donkey 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 康威生命游戏的简要介绍, 实际上这并不是传统意义上的游戏, 而是一种数学模型, 通过简单的规则, 模拟出生命的繁衍和演化. 阅读全文
posted @ 2021-04-03 18:26 Wild_Donkey 阅读(91) 评论(0) 推荐(0) 编辑
摘要: $$ 要想将得到按前 2d 位排序的 n 个后缀, 只要按 RK_i 为第一关键字, RK_{i + d} 为第二关键字排序即可~相当于关键字是 n 进制的两位数的基数排序 $$ 阅读全文
posted @ 2021-04-01 19:46 Wild_Donkey 阅读(110) 评论(0) 推荐(0) 编辑
摘要: $$ 基于 Tire, 线性地求 n 个模式串分别在特定的一个字符串中的出现次数 $$ 阅读全文
posted @ 2021-03-26 21:23 Wild_Donkey 阅读(154) 评论(0) 推荐(0) 编辑
摘要: $$ 找到所有 s_2 作为字符串 s_1 的字串的位置 $$ 阅读全文
posted @ 2021-03-26 21:19 Wild_Donkey 阅读(117) 评论(1) 推荐(1) 编辑
摘要: 打出代码, 提交时是不开 O2 的最快代码 (99ms, 最优解第一页唯一没开 O2 的), 开 O2 的最优解 (76ms) 阅读全文
posted @ 2021-03-17 19:26 Wild_Donkey 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 虽然本题不用斜优, O(n2) 能过, 但是既然能优化, 为什么不做到最快呢 (为什么不复制加强版的代码呢) 阅读全文
posted @ 2021-03-16 20:07 Wild_Donkey 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 斜率优化(Convex Hull Optimisation), 英文直译为 "凸包优化", 指利用状态转移方程的特殊性质, 将决策转化为坐标系中的点, 维护下凸壳进行优化的技巧. 阅读全文
posted @ 2021-03-15 21:01 Wild_Donkey 阅读(222) 评论(0) 推荐(0) 编辑
摘要: $$ \binom{n}{m}~\%~p = \binom{\frac{n}{p}}{\frac{m}{p}} \binom{n~\%~p}{m~\%~p} ~\%~p $$ 阅读全文
posted @ 2021-03-14 13:59 Wild_Donkey 阅读(96) 评论(0) 推荐(0) 编辑
摘要: $$ a^x \equiv a^{x~\%~\phi(m) + \phi(m)}~(mod~m) $$ 阅读全文
posted @ 2021-03-14 10:34 Wild_Donkey 阅读(345) 评论(0) 推荐(0) 编辑
摘要: Exgcd, 线性递推 阅读全文
posted @ 2021-03-07 16:56 Wild_Donkey 阅读(1434) 评论(0) 推荐(0) 编辑
摘要: Basketball1, Basketball2, Maze 阅读全文
posted @ 2021-02-20 08:43 Wild_Donkey 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 维护当前找到的不上升子序列的当前位置的最大值, 以下简称: 子序列数组. 每扫到一个新数, 替换序列中小于它的最大元素, 如果整个序列都大于等于它, 就新开一位, 成为更长的子序列. 而每次将一个数加入序列后, 一定存在一个和当前插入的元素位置等长的序列, 所以答案就是将元素都插入后序列的长度. 阅读全文
posted @ 2021-02-13 16:39 Wild_Donkey 阅读(116) 评论(0) 推荐(0) 编辑
摘要: Preview 今下午的主要内容是 序列 DP 区间 DP 可以说是动态规划里面最简单的一种类型, 通过学习和思考此类问题, 大家能够加深对动态规划本身的理解. 序列 DP 序列上的 DP 状态设计最基本的形式 \(F_i\) 表示以 \(i\) 结尾的最优值或方案数 \(F_{i, k}\) 表示 阅读全文
posted @ 2021-02-07 08:00 Wild_Donkey 阅读(122) 评论(0) 推荐(0) 编辑
摘要: DP 基础知识 阅读全文
posted @ 2021-02-05 13:50 Wild_Donkey 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 介绍网络流基本概念和 Edmonds-Karp, Dinic 两种算法 阅读全文
posted @ 2021-02-02 18:32 Wild_Donkey 阅读(87) 评论(0) 推荐(0) 编辑