300725: CF137D. Palindromes

Memory Limit:256 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Palindromes

题意翻译

## 题意简述 输入一个**包含大小写字母**的字符串 $s\;(|s|\leq 500)$ 与整数 $k\;(1\leq k\leq |s|)$ 。 询问**最少**修改多少个字符能使得 $s$ 可以分割成**不超过** $k$ 段回文串(**回文串判定区分大小写**)。 输出第一行表示最小修改次数。 输出第二行表示 $s$ 的修改和分割的结果,相邻的回文串以 `+` 字符相连。

题目描述

Friday is Polycarpus' favourite day of the week. Not because it is followed by the weekend, but because the lessons on Friday are 2 IT lessons, 2 math lessons and 2 literature lessons. Of course, Polycarpus has prepared to all of them, unlike his buddy Innocentius. Innocentius spent all evening playing his favourite game Fur2 and didn't have enough time to do the literature task. As Innocentius didn't want to get an F, he decided to do the task and read the book called "Storm and Calm" during the IT and Math lessons (he never used to have problems with these subjects). When the IT teacher Mr. Watkins saw this, he decided to give Innocentius another task so that the boy concentrated more on the lesson and less — on the staff that has nothing to do with IT. Mr. Watkins said that a palindrome is a string that can be read the same way in either direction, from the left to the right and from the right to the left. A concatenation of strings $ a $ , $ b $ is a string $ ab $ that results from consecutive adding of string $ b $ to string $ a $ . Of course, Innocentius knew it all but the task was much harder than he could have imagined. Mr. Watkins asked change in the "Storm and Calm" the minimum number of characters so that the text of the book would also be a concatenation of no more than $ k $ palindromes. Innocentius can't complete the task and therefore asks you to help him.

输入输出格式

输入格式


The first input line contains a non-empty string $ s $ which is the text of "Storm and Calm" (without spaces). The length of the string $ s $ does not exceed $ 500 $ characters. String $ s $ consists of uppercase and lowercase Latin letters. The second line contains a single number $ k $ ( $ 1<=k<=|s| $ , where $ |s| $ represents the length of the string $ s $ ).

输出格式


Print on the first line the minimum number of changes that Innocentius will have to make. Print on the second line the string consisting of no more than $ k $ palindromes. Each palindrome should be non-empty and consist of uppercase and lowercase Latin letters. Use the character "+" (ASCII-code 43) to separate consecutive palindromes. If there exist several solutions, print any of them. The letters' case does matter, that is an uppercase letter is not considered equivalent to the corresponding lowercase letter.

输入输出样例

输入样例 #1

abacaba
1

输出样例 #1

0
abacaba

输入样例 #2

abdcaba
2

输出样例 #2

1
abdcdba

输入样例 #3

abdcaba
5

输出样例 #3

0
a+b+d+c+aba

输入样例 #4

abacababababbcbabcd
3

输出样例 #4

1
abacaba+babab+bcbabcb

Input

题意翻译

## 题意简述 输入一个**包含大小写字母**的字符串 $s\;(|s|\leq 500)$ 与整数 $k\;(1\leq k\leq |s|)$ 。 询问**最少**修改多少个字符能使得 $s$ 可以分割成**不超过** $k$ 段回文串(**回文串判定区分大小写**)。 输出第一行表示最小修改次数。 输出第二行表示 $s$ 的修改和分割的结果,相邻的回文串以 `+` 字符相连。

加入题单

算法标签: