摘要:
可以用Matrix-Tree定理,然而被卡精度 1 #include<cstdio> 2 #include<cstdlib> 3 #include<algorithm> 4 #include<cstring> 5 #include<iostream> 6 #define MAXN 100+10 7 阅读全文
摘要:
后缀数组height+二分 阅读全文
摘要:
Description 物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转 停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种 因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货 阅读全文
摘要:
随机生成一个字符可以看成在AC自动机里面向前走一个节点,那么ans就是0向前走L步并且不经过单词节点, 由概率知识可得,f[p][L]=∑f[nxt[p][i]][L-1]*g[i] 其中p表示位于p节点,还要走L步,边界是f[p][0]=1.0,可以用记忆化搜索 非常巧妙的做法 阅读全文
摘要:
用KMP里面的next数组即可,原理就是next数组的原理 阅读全文
摘要:
字典树问题 对于普通的字典树,可以加一个vector数组记录非空的孩子,加快速度 还可以用左孩子右兄弟来节省空间,因为普通的trie的话是 int next[MAXN][26] 而左孩子右兄弟可以把[26]省掉,这题实际上并不需要这么节省也可以AC 1 #include<cstdio> 2 #inc 阅读全文
摘要:
发现字典里面的单词数目多且长度短,可以用字典树保存 f[i]表示s[i~L]的分割方式,则有f[i]=∑f[i+len(word[j])] 其中word[j]为s[i~L]的前缀 注意字典树又叫前缀树,所以用前缀更方便,否则按顺序dp的话就要把字符倒序了 复杂度O(L*l) L为字符串长度,l为单词 阅读全文
摘要:
struct Trie{ Trie* nxt[26]; int v; Trie(){ for(int i=0;inxt[t]){ p=p->nxt[t]; } else{ p->nxt[t]=new Trie; p... 阅读全文