题目链接:点击打开链接
题意:
消除字符串游戏,选择一个字母,则会消除和该字母相同且连续的一段,然后左右两边合拢,若左右两边字母相同则再次消除掉。直到合拢时两边字母不相同。
问这样连续消除的最大次数。
思路:
先把连续相同的字母当成一个字母,然后求最长回文串,
则答案就是(最长长度+1)/;2
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int MAXN = 110010;
//字符串长度<MAXN
char Ma[MAXN * 2];
int Mp[MAXN * 2];
int Manacher(char s[]) {
int l = 0, len = strlen(s);
Ma[l++] = '$';
Ma[l++] = '#';
for (int i = 0; i<len; i++) {
Ma[l++] = s[i];
Ma[l++] = '#';
}
M