Codeforces Round #764 (Div. 3) D. Palindromes Coloring
Solution
균등하게 펠린드롬을 만들기 위해선 2개씩 짝지을 수 있는 알파벳들을 최대한 균등하게 k개의 슬롯에 분배하는 방법이다.
각 알파벳별 숫자에서 1을 버림한 짝수를 db
에 더한다. 이 수는 페어로 펠린드롬을 만들 수 있는 개수이다. 단일로 들어가야하는 알파벳은 sg
에 더한다.
각 슬롯에 들어갈 수 있는 짝수 알파벳 페어의 최소 값은 db / 2 / k * 2
이다.
각 슬롯에 들어갈 수 있는 홀수 알파벳의 최소 값은 sg + (db % (k * 2)) >= k
이다.
따라서 두 값을 더하면 균등하게 분배했을 때 만들 수 있는 컬러링된 펠린드롬의 최소 길이다.
c++
1 |
|