摘要: SAM 定义 字符串 \(s\) 的 \(SAM\) 是一个接受 \(s\) 的所有后缀的最小 \(DFA\)(确定性有限自动机或确定性有限状态自动机)。 \(\mathrm{endpos(t)}:\) 子串 \(t\) 在原串 \(s\) 中所有出现位置(最后一个字符位置)的集合。 \(\math 阅读全文
posted @ 2024-01-01 08:21 _bloss 阅读(38) 评论(0) 推荐(3)
摘要: manacher 对于奇串,考虑维护一个具有最大 \(r\) 值的回文串 \((l,r)\),每次考虑一个新增加的点 \(i\)。若 \(i > r\) 那么直接暴力计算就可以;如果 \(i \leq n\),设 \(mid=(l+r)/2\),那么 \(i\) 点关于 \(mid\) 对称点 \( 阅读全文
posted @ 2023-12-26 21:36 _bloss 阅读(34) 评论(0) 推荐(2)
摘要: 后缀排序 倍增+基数排序 code bool cmp(int x,int y,int k){ // 常数优化,使访问连续 if(oldrk[x]==oldrk[y] && oldrk[x+k]==oldrk[y+k]) return 1; else return 0; } void get_sa() 阅读全文
posted @ 2023-12-26 10:12 _bloss 阅读(53) 评论(0) 推荐(3)
摘要: 四边形不等式 对于任意的 \(l_1\le l_2\le r_1\le r_2\),满足 \(w(l_1,r_1)+w(l_2,r_2)\le w(l_1,r_2)+w(l_2,r_1)\) 。 若等号恒成立,则称函数 \(w\) 为四边形恒等式。交叉小于包含。 如何证明 若满足 \(w(l,r-1 阅读全文
posted @ 2023-12-20 16:37 _bloss 阅读(113) 评论(0) 推荐(4)
摘要: 最大流 code int head[N],nex[N*N*8],ver[N*N*8],edge[N*N*8],tot=1; void add(int x,int y,int v){ ver[++tot]=y,nex[tot]=head[x],head[x]=tot,edge[tot]=v; ver[ 阅读全文
posted @ 2023-12-05 09:16 _bloss 阅读(54) 评论(0) 推荐(4)
摘要: Day 0 早上吃完饭就走了,路上不想颓,但还是简单颓了会。中午到站,吃的自助餐,吃完有忙着去参加一个颁奖,结束的时候已经 \(5:10\),然后去吃晚饭,燕大食堂还挺好吃,晚上打算早睡,但是还是墨迹到了11点。 Day 1 真的没啥胃口,早上相当于没吃(一个鸡蛋,一个小蛋糕,一碗粥),然后前往考场 阅读全文
posted @ 2023-11-18 21:54 _bloss 阅读(98) 评论(0) 推荐(6)
摘要: NOIP2023模拟19联测40 异或连通 类似于线段树分治,但是可以在 \(trie\) 树上做。首先根据询问建一棵 \(trie\) 树,然后现在考虑将边插到树上。设插入的边权为 \(c_i\),因为 \(c_i^x<K\),所以我们压着上界走,考虑每一位 \(i\),如果 \(K\) 在第 \ 阅读全文
posted @ 2023-11-16 22:00 _bloss 阅读(52) 评论(0) 推荐(3)
摘要: NOIP2023模拟12联测33 构造 手摸你就会发现 \(ryxyryxyr\),这样会更优,而且从第三行开始会有多余的贡献。 点击查看代码 // ubsan: undefined // accoders #include<bits/stdc++.h> using namespace std; c 阅读全文
posted @ 2023-11-08 22:15 _bloss 阅读(73) 评论(0) 推荐(3)
摘要: 感觉可以理解为带修点分治。 常用于解决与树原形态无关的带修改问题。 —— oi-wiki 点分树是通过更改原树形态使树的层数变为稳定 \(\log n\) 的一种重构树。就是通过点分治找重心的方式,将这一层重心为上一层重心的儿子。 所以对于很多暴力的复杂度是正确的。 一开始发现建树错了,然后发现是原 阅读全文
posted @ 2023-11-02 21:29 _bloss 阅读(83) 评论(0) 推荐(4)
该文被密码保护。 阅读全文
posted @ 2023-10-27 19:34 _bloss 阅读(17) 评论(1) 推荐(8)