摘要: BZOJ1195 LOJ10061 题目大意:给你$n$个模式串,求一个最短且字典序最小的文本串并输出这个串,$n<=12,len<=50$ 首先对所有模式串构造$Trie$图,$Trie$图的性质和$DP$的性质简直是完美契合.. 模式串数量很少,考虑状压 定义$f[x][s]$表示现在所在$Tr 阅读全文
posted @ 2018-11-24 19:44 guapisolo 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 会把考试/做题时犯得不太容易发现的错误记录下... 错误 1.在$Trie$图/$trs$图上乱搞时,注意可能需要把$fail$树/$parent$树中节点的贡献传递给子树 2.斜率优化$DP$,尤其注意别把$i,j$打反了! 3.空间不要开小了!线段树4倍,$SAM$2倍,$dfs$序2倍,邻接表 阅读全文
posted @ 2018-11-24 19:22 guapisolo 阅读(216) 评论(0) 推荐(0) 编辑
摘要: LOJ BZOJ 题目大意:给你一些模式串,问是否存在一个无限长的文本串,不包含任何一个给定的模式串 并没有想到去模拟合法的文本串在模式串的Trie图上匹配的过程..我好菜啊 如果一个字符串合法,那么它的每个子串都不是任何一个模式串的结尾,即沿着Fail链跳到根的每个点都不是结尾 一个合法文本串在模 阅读全文
posted @ 2018-11-24 16:16 guapisolo 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题目大意:略 每次选择一个最大深度K,跑IDA* 估价函数H=8-中间8个格里出现次数最多的数的个数x,即把它填满这个数最少需要8-x次操作,如果dep+H>K,就跳出.. 深搜的时候暴力修改,记录操作的方向,回溯再改回来就行了,根本不用把网格压进状态里嘛.. 又水了一篇博客 阅读全文
posted @ 2018-11-24 11:38 guapisolo 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 题目大意:略 题目里所有的运算都是幂运算,所以转化成指数的加减 由于搜索层数不会超过$2*log$层,所以用一个栈存储哪些数已经被组合出来了,不必暴力枚举哪些数已经被搜出来了 然后跑$iddfs$就行了 可以加一个剪枝,设你选择的最大迭代深度为K,现在如果当前组合出的数$x$,满足$x*2^{K-d 阅读全文
posted @ 2018-11-24 09:44 guapisolo 阅读(264) 评论(0) 推荐(0) 编辑