5442专题

HDU 5442 Favorite Donut

第一种方法,最小表示法 其实呢,你将每一个字母反转一下,将’a’变成’z’,就是最小表示法。 但是反转之后,我们如果用最小表示法,得到的是,在原串上位置最靠后的情况,与题意不服,所以我这里就强行将之往后硬判,最坏复杂度是当串所以的字符都相同的情况,退化成 O(n2) O(n^2)。 // whn6325689// Mr.Phoebe// http://blo

HDU 5442 Favorite Donut 最大表示法+KMP

首先2次最大表示法求出顺序和逆序情况下的位置,不过逆序求出来的是最大的下标,可以利用循环节来推出最小的位置。 #include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 1000010;int f[maxn];char s[maxn];void getFail