摘要: 一个奇奇怪怪的包 额,直接从题开始讲吧。 P4597 序列 sequence 这道题,先说暴力 暴力 考虑 \(dp\),设 \(f_{ij}\) 表示考虑到第 \(i\) 个数,当前数改为 \(j\),那么很明显,我们可以通过枚举上一个 \(k\),来形成一个 \(O(n^3)\) 的 \(dp\ 阅读全文
posted @ 2024-07-13 01:28 yabnto 阅读(17) 评论(0) 推荐(0)
摘要: 啊不是,是 AC 自动机 引入 trie 都知道吧,不知道也没关系啊,出门左转自己去搜(说实话,这东西和 trie 有个毛关系啊),然后我们知道 trie 是用来将模式串与文本串匹配然后匹最长前缀或后缀,而不能看文本串里面有没有,而 KMP 则是用来将模式串与文本串匹配出文本串中有没有模式串(不会没 阅读全文
posted @ 2024-06-29 23:19 yabnto 阅读(33) 评论(0) 推荐(0)
摘要: 思路 考虑 \(k = 0\) 时,由于是树,根到每个点只有一条简单路径,所以每个边都会走两次即为 \(2(n - 2)\) 考虑 \(k = 1\) 时,我们可以连一条边,使得成一个环,环上的边我们只用走一遍,所以我们希望环更可能大,所以将直径连边即可。 考虑 \(k = 2\) 时,在 \(k 阅读全文
posted @ 2024-06-12 22:39 yabnto 阅读(55) 评论(0) 推荐(0)
摘要: 引入 我们考虑对于一个长度为 \(n\) 的序列去找第 \(k\) 小,如果不用排序的话(虽然用了桶),可以利用一个桶匠所有数纪录下来,然后在桶上做二分即可(不会这个都不会吧),那么对于一个区间的话,我们便可以在区间 \([l, r]\) 上开桶然后做二分,不过这个桶我们该如何维护呢,首先我们想到前 阅读全文
posted @ 2024-05-30 14:34 yabnto 阅读(21) 评论(0) 推荐(0)
摘要: 图 ……我就是这么懒的一个人 struct Graph { #define h(x) h[x] #define nxt(x) a[x].nxt #define to(x) a[x].to #define w(x) a[x].w struct Edge { int to, w, nxt; } a[Ma 阅读全文
posted @ 2024-05-23 16:00 yabnto 阅读(14) 评论(0) 推荐(0)
摘要: 树上启发式合并 适用于维护子树内信息 例题:CF246E 思路 暴力 将询问离线下来,挂在每个点上 对于每个点 \(x\),维护一个桶 \(cnt_{dep}\),统计深度 \(dep\) 下不同字符串出现的次数 对于 \(x\) 上的询问输出 \(cnt_{dep_x+k}\) 每切换一个 \(x 阅读全文
posted @ 2024-04-09 13:10 yabnto 阅读(40) 评论(0) 推荐(0)
摘要: 祖宗发射器 阅读全文
posted @ 2024-03-09 20:28 yabnto 阅读(34) 评论(0) 推荐(0)
摘要: P3805 【模板】manacher 算法 题意 给定一个字符串,求所有字串中的最长回文串。 思路 暴力肯定过不了,如果在一个已经求出来的回文串中知道左半边,也肯定知道右半边,那么设 \(d_i\) 为以 \(i\) 为中心的回文串(奇数长度)的最长半径,那么在一个回文串 \([l,r]\) 中,知 阅读全文
posted @ 2024-03-09 16:04 yabnto 阅读(10) 评论(0) 推荐(0)
摘要: 线性基 板题 P3812 【模板】线性基 思路 首先得会高斯消元,然后我们从高斯消元的阴影中走出来,顺便带走我们的增广矩阵,然后把 \(b\) 砍了(\(b\) 是什么?建议你看看高斯消元),此时我们会得到一个矩阵,然后把它放到异或意义上,每个数就只会是 \(0\) 和 \(1\) 了,而我们要求的 阅读全文
posted @ 2024-02-04 00:04 yabnto 阅读(29) 评论(0) 推荐(0)
摘要: 高斯消元 板题 [SDOI2006] 线性方程组(别问我为什么不是【模板】高斯消元法,这个太**了) 思路 首先需要引入一个定义增广矩阵。 所以一个 \(n\) 元线性方程组就可以抽象成一个矩阵,\(a\) 为系数,\(b\) 为方程的常数项: \(\begin{bmatrix}a_{11}&\cd 阅读全文
posted @ 2024-02-03 23:36 yabnto 阅读(14) 评论(0) 推荐(0)