摘要: 都是从网上找的,交过题试过的应该没问题的模板。KMP//未优化的next函数void getNext(char s[],int next[]){ int length=strlen(s); int i=0,j=-1; next[0]=-1; while(i#includeusing namespace std;const int MM=100005;int next[MM],extand[MM];char S[MM],T[MM];void GetNext(const char *T){ int len=strlen(T),a=0; next[0]=len... 阅读全文
posted @ 2013-09-19 17:09 冰鸮 阅读(275) 评论(0) 推荐(0)
摘要: 模板来自notonlysuccess.模式串只有10个,并且重复出现的分值不累加,因此很容易想到状态压缩。将模式串加入AC自动机,最多有10*100个状态。dp[i][j][k]:串长为i,在Trie图上的状态为j,已经包含的模式串为k(二进制表示,第x位为1代表已经包含第x个串)。dp[i][j][k]为true或false代表该状态是否可达。沿着Trie图中的边走进行DP,时间复杂度O( 100*1000*1024 );最后枚举一下串长为L的所有可达状态,最大值即为结果。PS.内存有限,需要用滚动数组PS2.若使用静态队列的话,队列大小最好开状态数的二倍或者更多#include #incl 阅读全文
posted @ 2013-09-19 17:07 冰鸮 阅读(260) 评论(0) 推荐(0)