Codeforces Round #253 (Div. 2) —— B
2861 단어 codeforces
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
Kolya got string s for his birthday, the string consists of small English letters. He immediately added k more characters to the right of the string.
Then Borya came and said that the new string contained a tandem repeat of length l as a substring. How large could l be?
See notes for definition of a tandem repeat.
Input
The first line contains s (1 ≤ |s| ≤ 200). This string contains only small English letters. The second line contains number k (1 ≤ k ≤ 200) — the number of the added characters.
Output
Print a single number — the maximum length of the tandem repeat that could have occurred in the new string.
Sample test(s)
input
aaba
2
output
6
input
aaabbbb
2
output
6
input
abracadabra
10
output
20
Note
A tandem repeat of length 2n is string s, where for any position i (1 ≤ i ≤ n) the following condition fulfills: si = si + n.
In the first sample Kolya could obtain a string aabaab, in the second — aaabbbbbb, in the third — abracadabrabracadabra.
제목 대의: 원 문자열의 끝에 k개의 문자를 추가하여 원 문자열을 두 개의 중복 문자열을 포함하는 문자열로 만들고 이 두 개의 중복 문자열의 총 길이를 구한다.
이 문제는 개인적으로 좀 어려워서 오랫동안 해 보고서야 풀었다.나는 좀 어지럽게 썼는데, 주로 모든 상황을 일일이 열거하는 것이다.(사실 이 문제는 테스트 데이터 한 세트를 봤어요=)
#include<stdio.h>
#include<string.h>
int sum(char* m, int len, int k)
{
int n, i, j, maxn = 0;
for(n=(len+k)/2; n>=1; n--)
{
for(i=1; i+n<=len+k; i++)
{
int num = 0, x = 0;
for(j=i; j+n<=len+k; j++)
{
if(m[j] == m[j+n]) num++;
else break;
}
//if(j+n == len+k+1 && j == i+n) x = num;
if(j == i+n) x = num;
if(x > maxn) maxn = x;
}
}
return maxn;
}
int main()
{
int k, i, j;
char m[1000];
while(~scanf("%s", m+1))
{
scanf("%d", &k);
int len = strlen(m+1);
int num, maxn = 0;
if(k > len)
{
if((len+k)%2) printf("%d
", len+k-1);
else printf("%d
", len+k);
continue;
}
for(j=1; j<=len-k+1; j++)
{
int x = j;
for(i=1; i<=k; i++)
{
m[i+len] = m[x++];
}
num = sum(m, len, k);
if(num > maxn) maxn = num;
}
printf("%d
", 2*maxn);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Codeforces Round #715 Div. 2C The Sports Festival: 구간 DP전형구간 DP의 초전형. 이하, 0-indexed. 입력을 정렬하여 어디서나 시작하고 최적으로 좌우로 계속 유지하면 좋다는 것을 알 수 있습니다. {2000})$의 주문이 된다. 우선, 입력을 소트하여 n개의 요소를 $...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.