Задача №1181. Благозвучное слово
Разбор добавил Антон Полднев
Разделим данное нам слово на блоки, состоящие из максимального количества подряд идущих букв одного типа (типом буквы назовём её гласность/согласность). Очевидно, что ответом для всего слова будет сумма ответов для каждого блока.
Научимся решать задачу для одного блока. Пусть есть \(k\) подряд идущих букв одного типа. Нужно разделить их на минимальное количество блоков длины меньше трёх. Для чётного \(k\) таких блоков будет \(\frac k2\), для нечётного — \(\left\lceil\frac k2\right\rceil\). Общая формула для минимального количества таких блоков — \(\left\lfloor\frac{k+1}2\right\rfloor\). Символов, необходимых для разбиения на такие блоки, на один меньше, то есть \(\left\lfloor\frac{k+1}2\right\rfloor-1\).
Теперь научимся разбивать слово на блоки, состоящие из максимального количества подряд идущих букв одного типа. Для этого будем идти циклом по строке и, если тип текущего символа не отличается от типа предыдущего, увеличить на 1 переменную \(k\), в противном случае к текущему ответу прибавить \(\left\lfloor\frac{k+1}2\right\rfloor-1\) и установить значение \(k\) равным единице.