摘要:
"传送门" $log$多似乎不是什么问题,最容易想到的就是4个$log$的树剖+树套树吧 衷心希望大家别写线段树套线段树,这个东西真的极容易MLE(这题不会)以及TLE(这题在洛谷会TLE1个点,bzoj可以AC) 这题本质就是树上路径动态求第k大经过的点值,处理路径问题用树链剖分就好了,动态第k大 阅读全文
摘要:
"传送门" 有上下界最小费用可行流,行列建边变形。 行列建边相信大家都做过,没做过的可以看一下这个题: "bzoj3698XWW的难题" ,对应的我写的题解 "题解" 这个题需要变形一下,不只是单纯的对行列进行连边,首先对于一个空格,我们知道它最多影响2个线索:1个横向的和1个纵向的 所以我们可以对 阅读全文
摘要:
"传送门" 后缀排序裸题,SA上就是了 代码: c++ include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getchar(); !isdigit 阅读全文
摘要:
没脸扔传送门了 写个AC自动机的题目被爆搜卡住,最终我决定不写这个爆搜了,太恶心了 状态压缩dp! 直接设$f[i][j][S]为长度为i,当前为第j个节点,经过的密码状态为S$ 因为哪怕只有一个位置不确定都有两种位置可以填,一共就有26 2=52 42种情况 所以如果要输出方案,所有的密码串一定是 阅读全文
摘要:
"传送门" AC自动机上跑dp,首先想到正难则反 所以我们考虑不可读的字符串 设$f[i][j]$为长度为$i$,当前处理到第$j$个节点时的不可读字符串数 转移就很显然了 提示:如果一个节点的fail指针指向的节点中有一个是可读字符串的结尾节点,那么这个节点也是不可用的 代码: c++ inclu 阅读全文
摘要:
"传送门" 我也没想到map如此垃圾,bitset优秀啊 直接trie树上搜索就好了 代码: c++ include include include include include include using namespace std; void read(int &x) { char ch; b 阅读全文
摘要:
"传送门" 想到一个点上这个题目就没了:如果可以找到,那么必然是trie树上不经过病毒节点的一个环 接下来定义“病毒节点”:病毒节点就是病毒代码的最后一个字符,但是直接这样写会错,显然存在一个病毒代码是另一个病毒代码的子串的情况,那么一个病毒代码中就可能存在多个这样的病毒节点,怎么寻找呢?这就是一个 阅读全文
摘要:
"传送门" 看着就是裸的AC自动机是不是?会T一个点 然而。。。为什么放过暴力KMP和暴力find,理论复杂度$O(nm)$起步啊 AC自动机加一个树上差分就好啦,对于每个字符串的查询,实际上都是在fail树上每个点到根的路径上+1 fail树建出来就没了 代码: c++ include inclu 阅读全文
摘要:
"传送门" ac自动机模板题,裸的多串匹配 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getchar() 阅读全文
摘要:
"传送门" ac自动机模板,可能我写的ac自动机是有点问题的,所以跑的有些慢 暴力跳fail统计 代码: c++ include include include include include using namespace std; void read(int &x) { char ch; boo 阅读全文