摘要: 声明:本文部分内容经过 AI 润色。 你这是哪个SAM 后缀自动机,简称 SAM,是一种我认为非常复杂的自动机,但是它也有很多优秀的特点,所以能够处理很多问题,很多后缀数组问题也都能用后缀自动机完成。 整体结构 SAM 的内部包含两套边,理解这两套边是掌握 SAM 的关键。 第一套边:带字符的转移边 阅读全文
posted @ 2026-04-24 15:10 huhangqi 阅读(81) 评论(4) 推荐(2)
摘要: 由于 NOIP 被打飞,压线拿下 1=,只好来体验一下省选 看看我能翻多少名(准考证ZJ-88,虽然很吉利但是应该也是倒数了) 3.4 冬妮娅忽然跑到机房说自己放假在家太无聊了,也想来打比赛,这样加上学长我们学校就有六个人去了。 冬妮娅说自己不会用 Linux,让猫教他。 结果三个高一的要么不知道要 阅读全文
posted @ 2026-03-10 20:17 huhangqi 阅读(21) 评论(0) 推荐(0)
摘要: 本来想按照日期写的,但是考炸了。 到考场,终于输入对了密码。 我天,怎么这个 Dev-c++ 是英文的。 这个补全括号在哪里调? 找了一会儿没找到这辈子也是有了。 先看 T1 直接秒。 完美开局,直接开 T2。 这不是水题吗,只有 \(m=2,2n-2,2n-1\) 的情况。 写。 怎么大样例过不了 阅读全文
posted @ 2025-12-06 15:39 huhangqi 阅读(32) 评论(0) 推荐(1)
摘要: 初赛 9.19 被CPP强行提早一天会学校,遂不爽。 被猫学长投喂了麻薯,拜谢猫学长%%%。 做了2020年真题,90.5pts,赢。 晚上整个寝室楼都只有OIer,为什么其它竞赛一个赛季那么短? 9.20 因为学校压根就没什么人,所以七点起来也是吃上了早饭。 早上本来是要写19年初赛的,但是早上刚 阅读全文
posted @ 2025-12-06 15:38 huhangqi 阅读(22) 评论(0) 推荐(0)
摘要: 三维偏序 第一维,通过排序直接解决 第二维,通过归并排序处理 第三维,通过数据结构解决 void CDQ(int l,int r){ if(l==r)return; int mid = l+r>>1,L=l,R=mid+1; CDQ(l,mid),CDQ(mid+1,r); for(int i=l; 阅读全文
posted @ 2025-11-28 09:57 huhangqi 阅读(70) 评论(0) 推荐(0)
摘要: 定义 强联通分量:在有向图中任意两个节点连通的有向图(SCC) 点双连通分量:删除任意节点仍然连通(v-DCC) 边双连通分量:删除任意边仍然连通(e-DCC) 割点:删除这个点以后图的连通性会发生改变的点 桥:删除这条边后图的连通性会发生改变的边 Tarjan Tarjan 算法可以求出上面的所有 阅读全文
posted @ 2025-11-28 09:51 huhangqi 阅读(62) 评论(0) 推荐(0)
摘要: 洛谷 提供简单的 \(O(n^2)\) 做法,无需数据结构和三分什么的,只要推式子即可。 考虑 Alice 走完以后 Bob 的行动,如果 Bob 选择自己再修改一列,那么 Alice 可以马上修改 Bob 的对应列,让 Bob 的修改无效,甚至让结果变小。 而如果 Bob 修改 Alice 对应列 阅读全文
posted @ 2026-07-17 14:30 huhangqi 阅读(11) 评论(0) 推荐(0)
摘要: 概率 A - I NEED A OFFER! HDU - 1203 背包问题。目标是让“没有任何学校录取”的概率最小。 设 \(dp[v]\) 为花费 \(v\) 时全部落选的最小概率,转移: \[dp[v] = \min\big(dp[v],\ dp[v - a[j]] \times (1 - p 阅读全文
posted @ 2026-07-16 21:16 huhangqi 阅读(6) 评论(0) 推荐(1)
摘要: Codeforces 首先看看怎样会无解,如果填不满就是无解的,直接前缀和求出以后判断一下即可。 如果不是无解的,那么我们先走一遍把所有沙子拿起来,然后再走一遍把这些填起来,所以最多走两遍必定可行。 我们设起点 \(s\) 和终点 \(t\) 后,思考应该怎么走,这里假设 \(s\le t\)。 如 阅读全文
posted @ 2026-07-16 20:41 huhangqi 阅读(7) 评论(0) 推荐(0)
摘要: 洛谷 首先可以发现实际上可以把距离进行压缩,因为我们一旦有一架经过了一段距离,那么在这之后比它小的距离一定也会直接走,所以距离种类最多也不超过 \(547\) 个。 因为从 \(1\) 一直加到 \(547\) 的和使最大的不超过 \(150000\) 的。 然后考虑如何计算,由于要计算 \(n\) 阅读全文
posted @ 2026-07-13 20:46 huhangqi 阅读(10) 评论(0) 推荐(0)
摘要: 洛谷 非常神的构造。 首先发现 \(m\le n\) 的情况是白给的,直接一个人最多给一个就可以了。 那么在 \(m>n\) 的情况中,\(n\) 的范围就很小了。 设 \(v(A,S_A)\) 表示 \(A\) 这个人选择了集合 \(S_A\) 的价值。 先考虑 \(n=2\) 的情况,如果我们从 阅读全文
posted @ 2026-07-08 22:16 huhangqi 阅读(3) 评论(0) 推荐(0)
摘要: 洛谷 一个并不需要 KMP 的 \(O(n^2)\) 算法。 显然要考虑 dp。 与 KMP 方法不同的是,我们不考虑加入一个数的贡献,而是考虑从一个点为起点的目标字符串串前缀的贡献。 那么状态里需要记录一下目前已经确定了前面几位,以及接下来应该考虑的转移位置。 下一个转移位置应该是范围不被前面的串 阅读全文
posted @ 2026-07-08 21:15 huhangqi 阅读(8) 评论(0) 推荐(0)
摘要: AtCoder 参考 这篇题解 的时候感觉时间复杂度可以卡掉,所以我补充一下 DAG 链剖分这个做法怎么做。 暴力需要找到字典序排在第 \(k\) 的子序列,考虑建立序列自动机,也就是从起始点开始向下走,到任意点的每条路径都对应一个原字符串的子序列。 为了便于求出后面的 \(p\) 个字符,我们可以 阅读全文
posted @ 2026-07-07 21:00 huhangqi 阅读(8) 评论(0) 推荐(0)
摘要: AtCoder 我们肯定会先坐地铁,因此考虑每个地铁之间怎么设立公交点。 题目要求我们计算有几种设置方法,因此考虑 dp。我们先坐了地铁,那么之后就只会坐公交了,所以对于每个地铁站之间的地段可以单独讨论,最后用乘法原理计算。 对于不同的段,我们除了长度不同,还有左右两端可以走的长度不同。 在起始状态 阅读全文
posted @ 2026-07-07 15:32 huhangqi 阅读(7) 评论(0) 推荐(0)
摘要: 发现自己当时写这个学习笔记的时候精神状态好像不太正常,现在改了一下才搬过来。 一个图是二分图,就一定能分成两部分,而且每部分的点绝不会和自己这一部分的点直接相连。 二分图的判断非常水,直接黑白染色就行了。只要没有奇环就可以了。 然后就会有很多板子题了。 接着就是二分图的最大匹配问题。解决二分图的最大 阅读全文
posted @ 2026-06-11 21:29 huhangqi 阅读(15) 评论(0) 推荐(0)
摘要: 问题的难点在于首先要发现这不是多组询问。 首先,显然可以使用 Floyd 算法求出全源最短路。 最暴力的算法枚举边,再枚举每个三元组,时间复杂度为 \(O(n^4)\)。 然后考虑优化,假设我们之前枚举出来的边两端为 \(x\) 和 \(y\) 边长为 \(w\),并且设其路径为从 \(u\) 到 阅读全文
posted @ 2026-06-01 21:45 huhangqi 阅读(13) 评论(0) 推荐(0)