Loading

摘要: 前提 个人感觉 SAM 比其余的字符串算法更具有记录价值,像 KMP,AC 自动机,SA 等算法都能或多或少被 SAM 替代,除了像马拉车这类特殊处理回文的算法和基本子串结构这类高深算法之外,SAM 基本上就是能接触到的最顶端的东西了。 这可能是我退役前写的最后一篇学习笔记了。 SAM 是什么 SA 阅读全文
posted @ 2025-07-18 13:33 Alexande 阅读(16) 评论(0) 推荐(0)
摘要: 我是谁:HNCS 一枚很菜的 OIer,常用 _Alexande_ 和以 wyb 开头的用户名。 题解:题解里的东西都很少,没有代码哦。由于人很菜,有没说明好的可以指出。 博客为什么上锁:可能涉及到私人秘密。脸滚键盘,一般有些密码为:_^=SV<ZWKKG_nL2Ij];383>^l,如果是错误的话 阅读全文
posted @ 2023-09-07 22:14 Alexande 阅读(161) 评论(3) 推荐(0)
摘要: 基于 CSP-S 2025 之前对本题的一些思考,虽然考场上不一定能想出来,但是很具有思考价值(除了题面输入是真的屎)。 首先可以不管 \(c_i\),我们先思考 \(n\) 时的答案是什么,如何计算,再考虑 \(c_i\) 的性质。 具体来说,这是一棵完美二叉树,我们可以先枚举结点,看这个结点是否 阅读全文
posted @ 2025-10-31 16:36 Alexande 阅读(0) 评论(0) 推荐(0)
摘要: 有一个很关键的结论是:每个数最多交换一次,不会存在连锁交换。 有了这个结论,我们可以设 \(f_{i, 0/1}\) 表示到了 \(i\) 到底最后交没交换,转移显然是简单的,答案就是颜色段个数。 好,然后我们来说明这个结论的证明,考场上你只能观察出来,遇到这种操作很神秘的题多猜一猜这种性质之类的。 阅读全文
posted @ 2025-10-31 11:33 Alexande 阅读(1) 评论(0) 推荐(0)
摘要: 这个题唯一有价值的地方就是引导我们思考题目的一些性质。 尝试描述一下怎样才能操作 \(i\) 使得连锁反应炸掉所有数,观察操作性质,应该是以 \(i\) 作为峰的严格单峰序列才行。 我们先考虑一个前缀,设 \(f_i\) 为以 \(i\) 为峰的前缀要变成单峰的最小操作次数,显然 \(i\) 不可能 阅读全文
posted @ 2025-10-31 10:44 Alexande 阅读(0) 评论(0) 推荐(0)
摘要: 发现 \(a_i\) 很小,从这个角度入手. 考虑到对于所有的 \(t\),其与 \(t \bmod lcm(a_i)\) 的效果本质等价,我们用线段树维护以 \(i\) 时间开头的步数即可. 阅读全文
posted @ 2025-10-31 10:05 Alexande 阅读(1) 评论(0) 推荐(0)
摘要: 有点不想写代码。 首先遇到这种题就想到消消乐,\(f\) 的计算方式必定很简单,根据套路应该是基于某个结构上的贪心。 考虑分拆一个数只会使得其变小,所以我们是不可能从前往后拆的,应该从后往前拆,每次贪心拆满足条件尽可能大的,不难发现这样是对的。 仔细思考如何计算所有子区间答案,令 \(f_{i, j 阅读全文
posted @ 2025-10-31 09:07 Alexande 阅读(1) 评论(0) 推荐(0)
摘要: 首先令 \(f_i\) 为赢的概率。 发现一个事情,一个点的父亲的 \(f\) 比它更大,这意味着被动走绝对只能往下走。 因此得到转移式 \(f_{i} = \frac{f_v + f_{fa}}{2}\),其中 \(v\) 为叶子结点深度最浅的那个子树。 然后用主元法递推可以得到每个 \(f\) 阅读全文
posted @ 2025-10-30 20:31 Alexande 阅读(3) 评论(0) 推荐(0)
摘要: 发现和我之前做过的一个题很像。 首先注意到: \[E(x^2) = E(\sum [x_i \ne x_{i + 1}] \sum [x_i \ne x_{i + 1}]) = E(\sum\sum[x_i \ne x_{i + 1}][x_j \ne x_{j + 1}]) = \sum \sum 阅读全文
posted @ 2025-10-30 16:22 Alexande 阅读(2) 评论(0) 推荐(0)
摘要: 经典赛前活动脑子。 一般碰到这种题思考一些特殊性。 考虑答案一定不大于边权第 \(k\) 小的边权,所以现在只有起点为前 \(k\) 小边权的端点能够成为答案,暴力跑即可。 还是要想到单独一条边的情况。 阅读全文
posted @ 2025-10-29 20:27 Alexande 阅读(1) 评论(0) 推荐(0)
摘要: 考虑设计一下 DP 就是,设 \(f_{i, j, 0/1}\) 表示第一个串到了 \(i\),第二个串到了 \(j\),且最后一个位置放了第一个串还是第二个串的方案数,显然题目中给的相同不相同就是一句废话,后面的限制肯定比这个强,所以只需要考虑相邻的情况即可。 但是我们需要记录每个开头怎么办呢?我 阅读全文
posted @ 2025-10-29 19:28 Alexande 阅读(3) 评论(0) 推荐(0)
摘要: 首先感受一下不难发现可以二分 \(p\)。 现在相当于要进行操作使得所有数都变为 \(p\),比较暴力的做法是从 \(1\) 开始,如果比 \(p\) 打就一直减,然后递推到下一项,如果递推完了再回到第一项,可以证明递推的次数比较有限,如果此时都不行就炸了。 阅读全文
posted @ 2025-10-28 17:05 Alexande 阅读(2) 评论(0) 推荐(0)
摘要: 绝世唐题,为啥没有人写题解啊。 首先发现划分成若干个段,设一个 DP \(f_i\) 表示以 \(i\) 结尾的分段方式的最大贡献,那么朴素转移就是你去枚举区间取 \(\max\)。 发现是求 \(h\) 的最小值所对应的 \(b\),比较典的做法是扔进单调栈里,用一棵线段树维护,每次弹栈就将原本 阅读全文
posted @ 2025-10-28 16:26 Alexande 阅读(2) 评论(0) 推荐(0)
摘要: 启动脑子题专场。 首先一个比较关键的地方在于,这个题是环,不是链。想链的情况下怎么做,那么所有路径都已经确定了,我们使用简单数据结构维护一下区间覆盖即可。 发现一个事情,就是最后最优的情况必定至少割掉一条边,我们枚举到底割了哪条边,然后就转化为链的问题了,不难发现每次移动一格总共只会更改 \(O(n 阅读全文
posted @ 2025-10-28 15:08 Alexande 阅读(1) 评论(0) 推荐(0)
摘要: 正难则反,我们不去考虑移动的元素反而考虑不动的元素。 考察不动的元素一定需要形成一个不下降子序列,并且值必须连续,DP 即可。 比较能够启动大脑的一个题。 阅读全文
posted @ 2025-10-28 14:25 Alexande 阅读(2) 评论(0) 推荐(0)
摘要: 刻进骨子里的结论。 首先显然是先除以 \(G\),然后变成区间内最远互质点对,由质数分布定理得,这个点对和区间长度是一个量级的,我们枚举长度后再枚举端点,复杂度是可以接受的。 阅读全文
posted @ 2025-10-28 11:48 Alexande 阅读(3) 评论(0) 推荐(0)
摘要: 建可持久化 0/1 Trie,对每个点二分即可。 阅读全文
posted @ 2025-10-28 11:38 Alexande 阅读(1) 评论(0) 推荐(0)