摘要:
前言 前几天有幸听学长讲平衡树,想着好久没写博客了,记录一下。 简介 Splay,平衡树的一种,依靠每次将访问到的点旋到根来保持树的平衡。 并且,Splay 还可以高效解决序列翻转等操作。 实现 前提 以下代码是基于这样的定义的: struct Tree{int ch[2],val,siz,fa;} 阅读全文
摘要:
引入 斜率优化,是单调队列优化的一个进阶版本,为了更好地理解,先来回顾一下单调队列吧~ 所谓单调队列优化,就是对于形如: \[ dp_i=\max\{dp_j+a_j\} \] 的 \(dp\) 式,我们把所有的 \(dp_j+a_j\) 放进单调队列里,实现 \(O(1)\) 的转移。 这个时候, 阅读全文
摘要:
传送门 题目大意 卖足球赛的票,票价是 10元/张,你手中有 \(k\) 张 10 元钱,并且知道有 \(n\) 个人来买票时会带 10 元,\(m\) 个人会带 20 元钱。你可以顺利卖票,即每次都能找得出钱的概率是多少。 Solution 首先分析顺利卖票,由于票价是 10 元,所以带 10 元 阅读全文
摘要:
简介 二分图是一种特殊的图。其定义为: 节点由两个集合组成,且两个集合内部没有边的图。 那啥时候可以用二分图呢?当且仅当图可以进行合法的黑白染色的时候,可以考虑二分图。 二分图匹配 匈牙利算法 最基础的问题就是二分图的最大匹配。所谓最大匹配,就是对于左右两个集合内的点,每个点都只能选一次,并且左右匹 阅读全文
摘要:
简介 高斯消元是一个用于求方程组的解的算法。在线性代数中非常重要。一般而言,其复杂度为$O(n^3)$,可以承受$200$及以下的数据范围(当然有的题目时限是$10000ms$什么的,特殊情况特殊对待)。 算法理解 考虑一个二元一次方程组怎么解。 \(\begin{cases}a_1x_1+a_2x 阅读全文
摘要:
引入 大家都知道 \(Kruskal\) 求最小生成树吧,这个算法就是建立在前面说的算法的基础上的一个奇妙的想法。 有这么一个问题,给你一张图,每条边都有权值,然后规定一堆东西后问:满足条件的路径中,所经过边权最大值最小是多少。 初步想法 二分,一定是最先想到的,我们接下来就以标题中的那题为例讲讲这 阅读全文
摘要:
模板题引入 先来看一道模板题,CF 上的。 这题的意思是给定一棵有 \(n\) 个节点的树,树上有一些关键点(\(key\))。接下来有 \(q\) 组询问,每次给出 \(k_i\) 个 \(key\),要求删去一些点,使得这些 \(key\) 不相连。要求删去的最少的点数。 模板题解析 第一眼看到 阅读全文