随笔分类 -  前缀函数与 KMP 算法

摘要:"UVA 12467 Secret Word" kmp+二分,二分枚举答案的长度,用kmp判断是否合法 cpp include using namespace std; define rint register int define rll register long long define lon 阅读全文
posted @ 2019-08-07 10:33 Albert_liu 阅读(340) 评论(0) 推荐(0)
摘要:"UVA 12604 Caesar Cipher" 题意:给一个字母表s,一个标准串w,一个密文s,问w是否可能在密文的原文中出现且仅出现一次 cpp include using namespace std; const int maxn = 6e5; char a[maxn], b[maxn], 阅读全文
posted @ 2019-08-06 10:13 Albert_liu 阅读(396) 评论(0) 推荐(0)
摘要:"UVA 11452 "Dancing the Cheeky Cheeky"" 找循环节那里要从后往前找,以解决112234112234这样的数据 阅读全文
posted @ 2019-08-04 21:00 Albert_liu 阅读(225) 评论(0) 推荐(0)
摘要:"UVA 11022 "String Factoring"" dp[l] [r] = min(dp[l] [i],dp[i+1] [r] ) $l\le i using namespace std; const int maxn = 1000; char a[maxn]; int f[100][10 阅读全文
posted @ 2019-08-04 20:26 Albert_liu 阅读(461) 评论(0) 推荐(0)
摘要:"UVA 455 "Periodic Strings"" 题意:给T个字符串,分别输出这T个字符串的最小循环节长度 求出前缀数组如果n pi[n]整除n,则答案为n pi[n],否则为答案为n。 如上图,如果红色的前缀与蓝色的后缀相同,则两段绿色的相同,以此类推,整个字符串可划分为n pi[n]段相 阅读全文
posted @ 2019-08-04 15:32 Albert_liu 阅读(224) 评论(0) 推荐(0)