Слово называется палиндромом, если его первая буква совпадает с последней, вторая – с предпоследней и т.д. Например: "abba", "madam", "x".
Для заданного числа K слово называется почти палиндромом, если в нем можно изменить не более K любых букв так, чтобы получился палиндром. Например, при
слова "reactor", "kolobok", "madam" являются почти палиндромами (подчеркнуты буквы, заменой которых можно получить палиндром).
Подсловом данного слова являются все слова, получающиеся путем вычеркивания из данного нескольких (возможно, одной или нуля) первых букв и нескольких последних. Например, подсловами слова "cat" являются слова "c", "a", "t", "ca", "at" и само слово "cat" (а "ct" подсловом слова "cat" не является).
Требуется для данного числа K определить, сколько подслов данного слова S являются почти палиндромами.Входные данныеВ первой строке вводятся два натуральных числа:N (
) – длина слова и K (
).
Во второй строке содержится слово S, состоящее из N строчных латинских букв.
Выходные данныеТребуется вывести одно число – количество подслов слова S, являющихся почти палиндромами (для данного K).
Примеры
входные данные
5 1
abcde
выходные данные
12
входные данные
3 3
aaa
выходные данные
6
Ограничение по времени, сек: 1
Ограничение по памяти, мегабайт: 64В
обсуждении говорили о методах (скольжения и отрезков), но мне они незнакомы и найти их я не смог. Если они в самом деле тут нужны, подскажите, где почитать о них. :)
Я так понимаю, что задачу можно решить с помощью алгоритма
Манакера, но как его модифицировать непонятно.