随笔分类 - oi / 科技
n 方过百万,科技碾标算
摘要:License: CC BY-SA 4.0 乘法 把所有数扩大 \(10^n\) 倍然后当成整数做,可能要用到 __int128. (最后输出答案别忘了除回来) 缺点就是除法可能还是会爆精度,并且不支持开根之类的操作。 模法 突发奇想想到的一种方法. 大概思想就是同时记录浮点数和它对某个数取模后的值
阅读全文
摘要:本文采用 CC BY-NC-SA 协议发布。 闲话 我怎么啥都不会啊。/kel 正文 wqs 二分(即 Aliens' trick)是一类优化技巧,用来优化有个数限制的 dp。 例题:IOI2016 Aliens 题意省流:给你 \(n\) 个区间 \(a_i\),你要选最多 \(m\) 个区间 \
阅读全文
摘要:本文采用 BY-NC-SA 协议发布。 要求:给你一棵树,边带权,每次断边连边(保证合法且仍是树),在线求每次修改后的直径。 LCT (咕) Top Tree 拆边,然后用 negiizhao 论文里的方法维护。 实现时注意,翻转标记会影响合并的信息,要 swap 一下。 #include <ios
阅读全文
摘要:前言 本文采用 BY-NC-SA 协议发布。 这是一篇问答风格的学习笔记。 作者约等于民科,如果发现本文有错误或建议修改请告诉我。 正文 例题:定义多项式 \(F_n(x)=\sum\limits_{k=0}^n \dbinom nk A[n-k]x^k\),求证 \(F_n(x+y)=\sum\l
阅读全文
摘要:前言 Stop learning useless algorithms, go and solve some problems, learn how to use binary search. 以下内容大多是作者看完《如何在任意代数结构上做多项式乘法》[1] 后口胡的,所以可能和原文章不太一样。如果
阅读全文
摘要:前言 学了一周才学会... 本来是照着 OI Wiki 上的 SATT 写的,后来看到一半感觉自己懂了然后写了自己理解的版本。看题解后发现这个版本像 AAAT,于是我也不知道它应该叫 AAAT 还是 SATT 了。且叫它 AAAT 吧。 贺一张 lxl 的图: 正文 我理解的 AAAT 是维护子树的
阅读全文
摘要:2024.4.20 update:删除了代码里的多余变量,用 TOC 代替手写的目录. 目录闲话约定后缀类型诱导排序算法过程代码性能测试推荐阅读 闲话 我太蒻了,学了两三天才会。/kel 好像也没什么 duliu 出题人卡 \(O(n \log n)\) 的 SA...? 网上大多的 blog 都说
阅读全文
摘要:~~仍然是算导风格的学习笔记~~ 例题:[[HNOI2008] 玩具装箱](https://www.luogu.com.cn/problem/P3195) P 教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的
阅读全文
摘要:一种难卡的 Hash: 对于有根树,某点哈希值 $h(x) \equiv \text{Const}+\large \sum \limits_{i \in \text{son}(x)} \normalsize f(h(i))\pmod {\text{Const}}$,其中 $f$ 越随性越好。当 $f
阅读全文
摘要:在树上随机撒 $O(\sqrt V)$ 个点,作为「关键点」,这些点间贡献预处理出。 查询两点路径答案,路径上关键点间贡献直接查表,两端点到最近的关键点暴力。 ~~咕咕咕~~
阅读全文
摘要:最小割树(Gomory-Hu Tree)是一种可以在 $O(Vf)$ 的时间里求出一个图中全源最小割的算法,其中 $f$ 为一次最大流的时间。 记原图为 $G=(V,E)$,其最小割树为 $G'=(V,E')$. 在最小割树中,任两点间的最小割等于它们在原图中的最小割,且 $\forall (u,
阅读全文
摘要:标题是我乱起的名字。 在做某题时受到了启发,想出了一种之前没听说过的 MTT,在某谷上一问发现有人和我想的一样,立马去学了。 这种方法,我叫它 128MTT,它用到了科技 __int128。主要思想就是找一个 \(10^{27}\) 以上的大 NTT 模数,全程使用 __int128 做 NTT。这
阅读全文
摘要:核心思想:将 dp 方程写成广义矩阵形式,然后用线段树等数据结构维护。 广义矩阵:假设 $A \ast B = C$,其中 $A,B$ 均为 $n\times n$ 方阵,则 $$ C_{ij} = \bigoplus \limits_{k=1}^{n} (A_{ik} \otimes B_{kj}
阅读全文
摘要:对多个答案同时二分。 每次将答案在 $[l, r)$ 中的询问按答案与 $\text{mid}$ 的关系丢进两个 $[l, \text{mid})$ 和 $[\text{mid}, r)$ 的 `std::vector` 里,递归求解即可。 递归终止的条件:可能的答案区间长度为 $1$,此时答案唯一
阅读全文
摘要:朝鲜树是一种平衡树。当深度超过一个(自己指定的值)时暴力将整棵树重构。
阅读全文
摘要:K-D Tree 的二进制分组: (以下默认 2-D Tree,即下文中的 \(k\) 不是 K-D 中的K.) 维护一个 K-D Tree 的森林,各子树大小为 \(2^x\). 设当前元素数量为 \(x\),则 x&(1<<k) == 1 说明当前维护的森林里有大小为 \(2^k\) 的 K-D
阅读全文
摘要:这是一篇模仿算导风格的学习笔记。 [my cnblog](https://www.cnblogs.com/x383494/p/17540768.html) ## 普通莫队 例题:[P1494](https://www.luogu.com.cn/problem/P1494) 给定一个长为 $n$ 的数
阅读全文
摘要:离线算法。在时间轴上建线段树(可能要事先离散化),要维护的东西用 `vector` 什么的挂在线段树的节点上,DFS 一遍线段树,每次进入一个节点就加入要维护的东西,离开时撤销即可。 由于 DFS 的特性,只需支持最近的 `undo`,用 `stack` 可维护。
阅读全文
摘要:用于维护「敌人的敌人是朋友」这类的关系。 例题:[luogu P2024](https://www.luogu.com.cn/problem/P2024) 对于点 $i \in [0, n)$(我习惯用这种方法编号),假想一个点 $i+n$ 是它的食物,则 $i$ 捕食 $j$ 可以通过合并 $j$
阅读全文
摘要:维护树上问题时,我们希望能将一条链/一个子树上的点 **映射** 到 **连续** 的位置,即区间上,这样就可以用区间数据结构来维护此类信息了。 重链剖分提供了一种映射的方式,即对树上的点重标号,树上一条路径上的点映射为 $O(\log n)$ 个区间(此处默认 $\{1,2\}$ 两个点构成 $[
阅读全文