Processing math: 100%

Обласна олімпіада 2025 (розбір) | Articles

A. Дивна шеренга

Одноцифрові числа (09) завжди дивні, а багатоцифрові числа, що є паліндромами, містять повтори.

Якщо n<10, тоді відповідь рівна n+1, інакше — 10.

В. Алфавітна послідовність

Розділимо масив на зростаючі послідовності. Для цього перебираємо шеренгу: якщо s[i+1]>s[i], продовжуємо послідовність, інакше — починаємо нову послідовність.

Відповідь на задачу рівна максимальній довжині з усіх утворених послідовностей.

C. Гарна шеренга

Шеренга з k коней є гарною, якщо її множина номерів рівна {1,2,,k}. Тоді кількість таких шеренг дорівнює k!, а відповідь — nk=1k!.

Зауважимо, що для k>m маємо k!0(modm). Тому, якщо n>m суму можна обчислити для k=1,,m.

Відповіддю буде результат такої суми: min(n,m)k=1k!(modm).

D. Відгадай шеренгу

Нехай s — зафіксована шеренга коней довжини n. Розгл’янемо всі можливі рядки з n символів (від a до z) впорядковані лексикографічно від мінімального L=aa до максимального R=zz.

За допомогою бінарного пошуку по цьому відрізку, використовуючи відповіді:

  • = — рядок вгадано,

  • < — наша спроба менша за s,

  • > — наша спроба більша за s,

можна знайти s за O(nlog26) запитів, що гарантує не більше 1000 спроб.

Для розв’язку необхідно трактувати рядки як числа в системі числення з основою 26 і реалізувати операції додавання і ділення на 2 в стовпчик. Також можна скористатись вбудованою в Python, C# або Java довгою арифметикою, вибрати межі для двійкового пошуку: L=0,R=26n1 і перед виводом переводити числа в систему числення з основою 26.

E. Мiшки з вiвсом

Розглянемо декілька важливих фактів для розв’язку:

  • Для довільної групи коней з вагами ai1,ai2,,aik мінімальна кількість ходів для приведення їх до одного значення дорівнює kj=1|aijx|, де оптимальне x — медіана цієї групи.

  • Оптимальну групу з k коней можна вибрати як підрядок відсортованого масиву. Тобто, після сортування масиву a отримуємо b1b2bn.

Використавши ці факти можна зробити такий розв’язок:

  1. Відсортувати масив a за неспаданням: b1,b2,,bn.

  2. За допомогою префіксних сум обчислимо суму елементів для швидкого підрахунку вартості перетворення.

  3. Для кожного підрядка довжини k (тобто для кожного i від 1 до nk+1):

    • Нехай медіаною є bm, де m=i+k12 (для парного k можна обрати будь-який із середніх).

    • Обчислити вартість перетворення: cost=(bm(mi)(Pm1Pi1))+((Pi+k1Pm)bm(i+km1)), де Pj=jt=1bt — префіксна сума, а P0=0.

  4. Відповіддю буде мінімальна знайдена вартість серед усіх можливих підрядків.

F. Кінські команди

Розглянемо розв’язок для n2103. Нехай dp[i] — відповідь на задачі для масиву a1,,ai, dp[0]=0. Тепер ми можемо перебрати індекс найправішого видаленого числа j та оновити dp[i] значенням dp[j1]+(aj+1aj+2ai). Таку динаміку можна порахувати за O(n2).

Для того ж щоб здати задачу на повний бал необхідно здогадатись, що оптимально аби між видаленими елементами було не більше ніж 2log2A, де A — це максимально допустиме значення в масиві. При заданих обмеженнях достатньо перевірити щонайбільше 60 варіантів який елемент буде найправішим видаленим .

G. Зустрiч на iподромi

Оскільки з кожної ділянки виходить рівно одна доріжка, отримуємо функціональний граф. Кожна компонента такого графа складається з циклу, до якого «притікають» вершини, що знаходяться поза циклом.

Нехай для кожної ділянки u ми обчислили:

  • d(u) — мінімальну кількість ходів від u до входу в цикл (тобто до першої вершини, що повторюється);

  • id(u) — ідентифікатор компоненти, до якої належить u;

  • p(u) — позицію вершини u на циклі (якщо u вже в циклі).

За умовою, кожен кінь може за одну хвилину або залишитися на місці, або пройти за своєю єдиною доріжкою. Тому, якщо кінь стартує з u, то він може потрапити у вершину ft(u) за t ходів, а завдяки можливості чекати — залишатися в цій же вершині будь-який час після t.

Розглянемо запит із початковими ділянками u та v :

  1. Якщо id(u)id(v), їхні шляхи не перетнуться, тому відповідь 1.

  2. Якщо fd(u)(u)=fd(v)(v) то зустріч відбудеться у деревовидній частині, а саме у найнижчому спільному предок вершин u та v.

  3. Якщо ж жодна з попередніх умов не виконується, то коні зустрінуться на циклі. Можна показати, що оптимальне місце зустрічі буде або у вершині fd(u)(u) або fd(v)(v).