【题解】Ynoi2010 Brodal queue 分块 — Qiuly

本题不弱于小 Z 的袜子,考虑分块,令 $B$ 为块数。 先考虑单点修改,可以令 $f(x,y)$ 表示从块 $x$ 中选出一个数,然后从块 $y$ 中选出同样的数的方案数,放到平面上,有值的地方就是一个三角形,询问也是询问一个三角形中的 $f(x,y)$ 和。 怎么做修改,对每个颜色维护一个前缀出 阅读更多…

【算法】左偏树(可并堆)— Nt_Yester

前言 关于我想去学环状树却学了左偏树这件事 正文 前置芝士 并查集 性质 根据算法名称就可以知道,这是一个森林中所包含的所有树都向左偏的森林(也是因为他向左偏,并且可以进行合并,所以他也是可并堆)。 算法函数 建树: 很简单,并查集实现(就不放代码了)。 合并: 也就是把两棵树合并先放代码: int 阅读更多…

【算法】并查集 — Nt_Yester

正文 并查集你可以理解为是族谱森林(一开始每个节点初始化为自己),我们用 $f_i$ 表示 $i$ 的父亲,一般有以下操作:并和查。 先来说查,查就是字面意思:查找 $i$ 的最早祖先,我们可以递归查找,查找 $i$ 的父亲,再查找 $i$ 的父亲的父亲,依次递归,就有了以下代码。 int find 阅读更多…

【题解】CF627F Island Puzzle 构造 + 模拟 — Qiuly

这种 d1f 绝对是搞人心态的。 因为一条路径走偶数次是没用的,只考虑树的情况的话,$0$ 走的路径是一定的,简单判断一下即可。 由于操作可逆,将 $0$ 所在目标节点移做根,先把 $0$ 移过去。考虑新增一条边能干啥:对于所在的环,​和 $0$ 最近的节点不动,其他的节点按照顺时针或者逆时针不断轮 阅读更多…

【题解】CF303E Random Ranking 分治 + dp — Qiuly

按照常规做法先将值域分为 $O(n)$ 段。 考虑一个人 $i$ 在第 $j$ 段时,其他的人选择的所有情况的概率,注意到其他的人可以分为三类:1. 选段在 $j$ 前。 2. 选了第 $j$ 段。 3. 选段在 $j$ 后。第一类对排名的贡献固定,第二类可以算概率(每个人等价),第三类不对排名造成 阅读更多…