1. Главная
  2. Библиотека
  3. Геометрия
  4. Для прохождения очередного уровня в игре Пете нужно был...
Разбор задачи

Для прохождения очередного уровня в игре Пете нужно было составить из заданных букв слово‑палиндром. Он быстро справился с этой задачей, но отвлёкся. Пока Петя не видел, его брат Витя поменял местами две буквы в строке, стоявшие на разных позициях. Теперь — задача №700686

  • Предмет: Геометрия
  • Автор: Кэмп
  • #Дискретная математика
  • #Теория графов
Для прохождения очередного уровня в игре Пете нужно было составить из заданных букв слово‑палиндром. Он быстро справился с этой задачей, но отвлёкся. Пока Петя не видел, его брат Витя поменял местами две буквы в строке, стоявшие на разных позициях. Теперь — задача №700686

Условие:

Для прохождения очередного уровня в игре Пете нужно было составить из заданных букв слово‑палиндром. Он быстро справился с этой задачей, но отвлёкся. Пока Петя не видел, его брат Витя поменял местами две буквы в строке, стоявшие на разных позициях.
Теперь Пете надо быстро найти позиции двух букв и поменять их местами, чтобы опять получился палиндром (не обязательно тот же самый).
Палиндром — это строка, которая читается одинаково как слева направо, так и справа налево. Например, level, noon, racecar.

На вход подаётся одна строка из строчных латинских букв длиной не менее 3 и не более 105 символов.
Гарантируется, что данная строка может получиться из строки‑палиндрома с помощью обмена местами двух символов, расположенных на разных позициях.

Выведите два различных числа через пробел: номера символов в исходной строке — таких, что после обмена их местами получится палиндром. Нумерация элементов строки начинается с 1. Если существует несколько пар элементов строки, дающих палиндром в результате обмена, то выведите любую пару.

Если в строке cbcaba поменять местами первый и четвёртый символы, то получится abccba, и это палиндром.
Заметим, что для данной строки также правильным ответом является пара 36, так как при обмене третьего и шестого символов получится cbaabc, что тоже является палиндромом.

Решение:

Для решения этой задачи нам необходимо найти такую пару индексов (i,j)(i, j), при обмене символов в которых строка станет палиндромом.

Дано:

  • Строка SS длиной NN (3≤N≤1053 \le N \le 10^5).
  • Гарантируется, что решение существует.
  • Нумерация позиций начинается с 11.

Решение:

  1. Анализ: Так как нам гарантировано, что решение существует, мы можем перебрать все пары позиций (i,j)(i, j), где i<ji < j, и проверить, становится ли строка палиндромом после обмена. Однако для строки длиной 10510^5 перебор всех пар (сложность O(N2)O(N^2)) будет слишком медленным.
  2. Оптимизация:
    • Сначала опре...

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

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

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

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

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

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

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

Топ 3 ошибок

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

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