실행 시간 제한 | 메모리 제한 |
---|---|
2 초 | 1024 MB |
동네의 홍길동 사장님은 매년 가을에 호박 축제를 개최합니다. 올해도 홍길동 사장님의 호박 축제가 큰 성황을 이루었는데, 홍길동 사장님의 G과 H 팀은 특별한 경쟁을 펼쳤습니다.
팀원들은 축제의 수상식에 참석하기 위해 이미 줄을 서 있습니다. 그들은 사장님이 총 개의 그룹 사진을 찍어 주길 바랍니다. 각 줄은 축제 참석자들의 연속된 부분 수열을 나타냅니다.
하지만 연날리 사장님은 팀원들의 줄 세우는 방식에 매우 까다롭습니다. 특히, 그는 부분 수열이 회문을 이루지 않는 경우 그 사진을 찍을 거부합니다. 회문이란, 문자나 수열이 앞으로 읽을 때나 뒤로 읽을 때나 동일하게 나타나는 것을 의미합니다.
각 개의 연속 부분 수열에 대해 회문을 이루기 위해 필요한 최소 교환 횟수를 세십시오(회문을 만들 수 없는 경우 -1). 한 번의 교환은 부분 수열의 인접한 두 참석자의 위치를 교환하는 것을 의미합니다. 모든 카운트의 합계를 출력하세요.
선수들의 줄을 나타내는 문자열로 길이의 G와 H의 문자열이 주어집니다.
각각의 선수 조합에 대해 회문을 만들기 위해 필요한 최소 교환 횟수를 찾고, 그리고 그 횟수들을 모두 더한 값을 출력하세요.
GHHGGHHGH
12
가능한 문자열의 연속적인 조합을 예시로 들어봅시다. 예를 들어, 첫 네 조합은 G, GH, GHH, 그리고 GHHG입니다. G와 GHHG는 이미 회문이므로 합계에 을 기여합니다. GHH는 단일 교환을 통해 회문으로 재배열 할 수 있으므로 합계에 을 기여합니다. GH는 어떠한 수의 교환을 사용하여도 회문으로 만들 수 없으므로 합계에 을 기여합니다.
다른 연속 부분 조합으로 기여하는 합계는 HHGG입니다. 이 조합은 두 번의 교환을 통해 회문으로 재배열 할 수 있습니다. 이렇게 가능한 문자열의 연속적인 조합에서의 값을 모두 카운팅 하면 12가 나옵니다.
출처: USACO 2022 December Contest, Platinum Problem 3. Palindromes