Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:这题理论上是有问题的吧In Reply To:这题理论上是有问题的吧 Posted by:philipyexushen at 2016-02-04 17:27:32 > #include <iostream> > #include <algorithm> > #include <functional> > #include <string.h> > > using namespace std; > > static char str[400010]; > static int _Next[400010], store[400010]; > > void Get_Next(const int); > > int main(void) > { > int Length, store_len; > while (~scanf("%s", str)) > { > Length = strlen(str); > Get_Next(Length); > store_len = 0; > > //if (_Next[Length] >= Length / 2) > // store[store_len++] = Length; > store[store_len++] = Length; > for (int k = _Next[Length]; k > 0; k = _Next[k]) > store[store_len++] = k; > for (int i = store_len - 1; i >= 0; i--) > printf("%d ", store[i]); > printf("\n"); > } > return EXIT_SUCCESS; > } > > void Get_Next(const int Length) > { > int i = 0, k = -1; > _Next[0] = -1; > > while (i < Length) > { > if (k == -1 || str[i] == str[k]) > { > i++; > k++; > _Next[i] = k; > } > else k = _Next[k]; > } > } > > 把if (_Next[Length] >= Length / 2)去掉就AC了 > 可是事实上如果去掉这个,abcaab就会输出2,6而事实上abcaab是不合法的吧 ab abcaab 合法 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator