#ATagc021d. [AGC021D] Reversed LCS

[AGC021D] Reversed LCS

题目描述

高桥君打算送给妈妈一个字符串作为礼物。

字符串 TT 的“价值”定义为:将 TT 反转得到 TT'TTTT' 的最长公共子序列的长度。也就是说,作为子序列(不要求连续)同时出现在 TTTT' 中的最长字符串的长度。

高桥君手中有一个字符串 SS。他希望通过最多修改 KK 个字符,使得最终得到的字符串的“价值”尽可能大。

请你求出能够达到的最大“价值”。

输入格式

输入以如下格式从标准输入读入:

SS KK

输出格式

输出能够达到的最大“价值”。

样例 1

输入

abcabcabc
1

输出

7

样例 2

输入

atcodergrandcontest
3

输出

15

说明/提示

限制条件

  • 1S3001 \leq |S| \leq 300
  • 0KS0 \leq K \leq |S|
  • SS 仅由小写英文字母组成
  • KK 是整数

样例解释 1

将第 11 个字符修改为 c 后,字符串变为 cbcabcabc。此时,设该字符串为 TT,则长度为 77 的字符串 cbabcbcTTTT' 的最长公共子序列的一种。

由 ChatGPT 4.1 翻译