codeforces ECR 74 AB-string(找规律)

题目大意:

有一字符串,我们定义好的字符串为:它的每一个字符都可以找到那个字符所在的子串的回文串。现在问这个字符串有多少个好的字符串。

解题思路:

首先,我们考虑事件的对立事件。有多少坏的字符串。我们发现一个字符串是坏的,当且仅当出现一个坏的字符在某个串的左右端点。为什么呢?考虑一个字符串,它中间的字符只可能有两种情况。首先:str[i] == str[i-1] || str[i]== str[i+1],那么这个字符串肯定是好的字符串,其次str[i]!=str[i-1] && str[i]!=str[i+1],那么它也可以生成一个回文串例如ABA,BAB。所以出现坏字符串当且仅当出现:

ABBBBB

BBBBBA

BAAAAA

AAAAAB

所以我们找出来即可。

废话:这题首先我们要想到找事件的对立事件。

#include 
#define OPEN 0
#define int long long
using namespace std;
int32_t main() {
#if OPEN
	freopen("in.txt", "r", stdin);
#endif
	int n; cin >> n;
	string str; cin >> str;
	int ans = 0;
	for (int ii = 0; ii<2; ii++) {
		reverse(str.begin(), str.end());
		int i = 0; int j = 0;
		while (str[j] == str[i] && j

 

你可能感兴趣的:(codeforces,adHoc)