// [9/12/2014 Sjm] /* 按题目要求进行模拟。。。 当初比赛时,WA了4次才AC掉,仅仅因为一句话: The symbol A, B and C are different continuous non-empty substrings of the poem. */#include <iostream> #include <cstdlib> #include <cstdio> #include <string> using namespace std; string Ini(string str) { string t_str = ""; for (int i = 0; i < str.size(); ++i) { if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '1' && str[i] <= '9')) { t_str += str[i]; } } return t_str; } bool JudgeOne(string str) { if (str.size() < 5) { return false; } int len = str.size(); for (int i = 1; i <= len/3; ++i) { string t_str_begin = str.substr(0, i), t_str_end = str.substr(len - i, i); if (t_str_begin != t_str_end) { continue; } else { string t_str = str.substr(i, len - 2 * i); int t_len = t_str.size(); if ((t_len - i)/2 == 0) { continue; } if (0 != (t_len - i) % 2) { continue; } string tt_str_be = t_str.substr(0, (t_len - i) / 2), tt_str_en = t_str.substr((t_len - i) / 2 + i, (t_len - i) / 2); if (tt_str_be != tt_str_en) { continue; } if (tt_str_be == t_str_begin) { continue; } string strToJudge = t_str.substr((t_len - i) / 2, i); if (strToJudge == t_str_begin) { return true; } } } return false; } bool JudgeTwo(string str) { if (str.size() < 7) { return false; } int len = str.size(); for (int i = 2; i <= len/3; ++i) { string str_begin = str.substr(0, i), str_end = str.substr(len - i, i); if (str_begin != str_end) { continue; } if ((2 == i) && (str_begin[0] == str_begin[1])) { continue; } string t_str = str.substr(i, i); if (t_str == str_begin) { if (0 == len - i * 3) { continue; } string tt_str = str.substr(i * 2, len - i * 3); int mylen = t_str.size(); for (int k = 1; k < mylen; ++k) { string A = t_str.substr(0, k); string B = t_str.substr(k, mylen - k); if (A != B && A != tt_str && B != tt_str) { return true; } } } } return false; } int main() { //freopen("input.txt", "r", stdin); int T; scanf("%d", &T); getchar(); while (T--) { string str; getline(cin, str); str = Ini(str); if (JudgeOne(str) || JudgeTwo(str)) { printf("Yes\n"); } else printf("No\n"); } return 0; }
模拟 之 zoj 3818 Pretty Poem
最新推荐文章于 2015-08-17 15:06:02 发布