1. Главная
  2. Библиотека
  3. Теория вероятностей
  4. Влад нашёл двоичную строку чётной длины . Он считает па...
Разбор задачи

Влад нашёл двоичную строку чётной длины . Он считает пару индексов , где хорошей, если верно, что . Например, в строке '010001' только 1 хорошая пара, так как , и . А в строке '0101' нет ни одной хорошей пары. Влад любит палиндромы, но не слишком сильно,

  • Предмет: Теория вероятностей
  • Автор: Кэмп
  • #Теория вероятностей и математическая статистика
  • #Дискретная математика
Влад нашёл двоичную строку чётной длины . Он считает пару индексов , где хорошей, если верно, что . Например, в строке '010001' только 1 хорошая пара, так как , и . А в строке '0101' нет ни одной хорошей пары. Влад любит палиндромы, но не слишком сильно,

Условие:

Влад нашёл двоичную строку $s$ чётной длины $n$. Он считает пару индексов $(i, n-i+1)$, где $1 \le i < n-i+1$ хорошей, если верно, что $s_i = s_{n-i+1}$.

Например, в строке '010001' только 1 хорошая пара, так как $s_1 \ne s_6$, $s_2 \ne s_5$ и $s_3 = s_4$. А в строке '0101' нет ни одной хорошей пары.

Влад любит палиндромы, но не слишком сильно, поэтому он хочет переставить некоторые символы строки так, чтобы в строке оказалось ровно $k$ хороших пар индексов.

Определите, возможно ли переставить символы в данной строке так, чтобы ровно $k$ пар индексов $(i, n-i+1)$ были хорошими.

Строка $s$ называется двоичной, если она состоит только из символов '0' и '1'

Первая строка содержит целое число $t$ ($1 \le t \le 10^4$) — количество наборов входных данных.

Первая строка каждого набора содержит два целых числа $n$ и $k$ ($2 \le n \le 2 \cdot 10^5$, $0 \le k \le \frac{n}{2}$, $n$ — чётное) — длину строки и нужное количество хороших пар.

Вторая строка каждого набора содержит двоичную строку $s$ длины $n$.

Гарантируется, что сумма $n$ по всем наборам входных данных не превосходит $2 \cdot 10^5$.

Для каждого набора входных данных выведите «YES», если существует способ переставить символы строки так, чтобы хороших пар стало ровно $k$, иначе выведите «NO».

Вы можете выводить каждую букву в любом регистре (строчную или заглавную). Например, строки «yEs», «yes», «Yes» и «YES» будут приняты как положительный ответ.

Решение:

Для решения задачи, давайте разберем, как мы можем определить, возможно ли переставить символы двоичной строки так, чтобы получить ровно k хороших пар индексов.

Шаг 1: Понимание хороших пар

Хорошая пара индексов (i, n-i+1) означает, что символы на этих позициях равны. Например, если у нас есть строка длиной n, то мы можем разбить ее на n/2 пар:

  • (1, n), (2, n-1), ..., (n/2, n/2 + 1)

Шаг 2: Подсчет символов

Для начала, нам нужно подсчитать количество символов '0' и '1' в строке. Обозначим:

  • count0 - количество...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какое ключевое свойство двоичной строки необходимо учитывать для определения максимально возможного количества хороших пар индексов после перестановки символов?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет