HDU 3068 최 장 회 문 (Manacher 템 플 릿 문제)
1612 단어 - - 데이터 구조 - -Manacher> 문자열 <
중국어.
생각:
Manacher 템 플 릿 문제
따로 답문 자동 해법 이 있다.
코드:
#include
using namespace std;
const int MAXN=210000;
struct Manacher{
char Ma[MAXN*2];
int Mp[MAXN*2];
int Mx[MAXN*2];
int len;
double ave;
int l;
int ans;
void manachar(char s[]){
l=0;ans=0;
len=strlen(s);
Ma[l++]='$';
Ma[l++]='#';
for(int i=0; ii?min(Mp[2*id-i],mx-i):1;
while(Ma[i+Mp[i]]==Ma[i-Mp[i]]){
Mp[i]++;
ave++;
}
if(i+Mp[i]>mx)
{
mx=i+Mp[i];
id=i;
}
Mx[i]=mx;
ans=max(ans,Mp[i]-1);
}
ave/=len;
}
void debug(){
printf("id: ");
for(int i=0;i
소문 자 영문 문자 a, b, c... y, z 로 만 구 성 된 문자열 S 를 보 여 줍 니 다. S 에서 가장 긴 답장 문자열 의 길 이 를 구 합 니 다.
답문 은 정반 독 이 모두 같은 문자열 이다. 예 를 들 어 aba, abba 등 이다.
Input 입력 은 120 그룹 을 넘 지 않 고 여러 그룹의 case 를 입력 합 니 다. 각 그룹 은 소문 자 영문 문자 a, b, c... y, z 로 구 성 된 문자열 S 를 입력 합 니 다.
두 그룹의 case 사 이 를 빈 줄 로 구분 합 니 다. (이 빈 줄 은 처리 할 필요 가 없습니다.)
문자열 길이 len < = 110000 Output 각 줄 의 정수 x 는 하나의 case 에 대응 하여 이 그룹의 case 문자열 에 포 함 된 가장 긴 답장 길 이 를 표시 합 니 다.
Sample Input
aaaa
abab
Sample Output 4
3
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HDU 3498 whosyourdaddy (댄스 체인 중복 커버 가능)N 개의 점, M 개의 변 구성 도 를 드 립 니 다.한 점 을 선택 할 때마다 인접 점 을 덮 을 수 있 습 니 다. 모든 점 을 덮 으 려 면 최소 몇 점 을 선택 하 시 겠 습 니까? So he entered ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.