月度归档: 2023 年 5 月

5 篇文章

「NOIP Record」#5 倍增
满足「结合律」的静态信息 CF1175E Minimal Segment Cover 预处理 $rt_x$ 表示点 $x$ 经过一条线段能到达的最右边的点。 跳区间显然是满足结合律的,可以倍增之,复杂度 $O(n \log_2 n)$。 这类题目有一个重要的小技巧:为了满足最优性,倍增时跳到不能到达 $y$ 的最远的点 $p$,然后判断能一次跳过 …
「NOIP Record」#4 多项式哈希与异或哈希
多项式哈希 把元素看作数字,把哈希对象看作关于 $P$ 的多项式,得到多项式哈希,亦称为进制哈希。 主要用于有序对象的哈希。 一般使用unsigned long long自然溢出,相当于对 $2^{64}$ 取模。 关于 $P$ 的选取,尽量避免常用的大质数。下文统一使用1610612741,其在 $[2^{30},2^{31}]$ 中。 void…
「NOIP Record」#3 Trie
Trie luogu2922 [USACO08DEC]Secret Message G 给定两个字符串序列 $a$ 与 $b$,对于 $b$ 中每个字符串 $t$,求 $a$ 中有多少个字符串 $s$,满足以下两个条件之一 $s$ 是 $t$ 的前缀。 $t$ 是 $s$ 的前缀。 两个字符串序列中所有字符串长度之和不超过 $500000$。 把 …
「NOIP Record」#2 基环树
突破口永远在环上。 找环是常用操作,但是并没有一个合适的模板。 笔者在写这篇文章之前就做过一些基环树的简单题,但是每一次写的找环都不尽相同。仅仅用dfs的回溯模拟一个栈,显然是不够公式化的,且容易出 bug,因此我们需要确定一种可靠的写法。 关于dfn的那套理论再合适不过了。 当然这玩意只能找一个环。 int cnt, num, fa[N]…
「NOIP Record」#1 树形DP(1)
树形 DP 计数。 luogu8867 建造军营 对于图中一条非割边,看守与否都相同,因此可以用 Tarjan 算法求出边双再缩点,把非树边单独拿出来,讨论每一条树边。 然而貌似不是很好做,子树外是否建造会影响子树内。考虑设 $f_x$ 为军营只在以 $x$ 为根的子树中出现,且至少存在 $1$ 个军营的方案数。 转移时对于边 $(x,y)$,如果…