Разбор задач Educational Codeforces Round 7

Revision ru3, by Edvard, 2016-02-10 23:40:09

622A - Infinite Sequence

Вычтем из числа n единицу. Определим сначала номер блока в который попало n-е число. Для это сначала вычтем из числа n число 1, затем 2, затем 3 и так далее пока n не станет отрицательным. Количество вычитаний и будем номером блока, а позицией в блоке будет последнее неотрицательное число, которое мы встретим.

С++ solution

Сложность: .

622B - The Time

В этой задаче можно было a раз прибавлять к текущему времени по одной минуте, аккуратно обрабатывая переполнения часов и минут.

А можно было просто посчитать ответ формулой: .

C++ solution 1

C++ solution 2

Сложность: O(a) or O(1).

622C - Not Equal on a Segment

Эту задачу можно было решать по разному, например, с помощью структур данных или sqrt-декомпозиции. Но это, конечно, делать не требовалось. Мы предполагали следующее простое линейное решение. Сделаем сначала предподсчет: для каждого числа номер первого не равного ему слева. Теперь, чтобы ответить на запрос нужно сначала проверить число в правой границе на равентсво числу x, если они не равны то мы уже нашли ответ. Если же они равны проверим первое число слева не равное числу в правой границе.

C++ solution

Сложность: O(n).

622D - Optimal Number Permutation

Давайте построим ответ в котором сумма будет равна 0. Пусть n чётно. Давайте расставим нечётные числа в первой половине массива: число 1 в позициях 1 и n, число 3 позициях 2 и n - 1 и так далее. Аналогично давайте расставим чётные числа во второй половине массива: число 2 в позициях n + 1 и 2n - 1, число 4 в позициях n + 2 и 2n - 2 и так далее. Число n мы можем поставить в оставшихся в конце свободных позициях. По аналогии ответ строится для нечётного n.

Легко видеть, что при данном построении искомая сумма равна 0.

C++ solution

Сложность: O(n).

Tags учебный раунд 7, разбор задач

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en10 English Edvard 2016-02-11 23:46:39 4 Tiny change: 'd modulo $10^9+7$).' -> 'd modulo $MOD=10^9+7$).'
ru8 Russian Edvard 2016-02-11 23:46:22 10
en9 English Edvard 2016-02-11 23:45:57 10
ru7 Russian Edvard 2016-02-11 23:45:25 24 Мелкая правка: 'циклом за линейное время). Если $n' -> 'циклом за $O(klogk)$). Если $n'
en8 English Edvard 2016-02-11 02:07:12 1281
ru6 Russian Edvard 2016-02-11 01:59:16 43
en7 English Edvard 2016-02-11 01:47:06 1130 Tiny change: '{z_{i+1}}=\nmax(d_{z_{' -
en6 English Edvard 2016-02-11 01:26:30 3 Tiny change: 's problem is suggeste' -> 's problem was suggeste'
en5 English Edvard 2016-02-11 01:25:11 79
en4 English Edvard 2016-02-11 01:23:26 700
en3 English Edvard 2016-02-11 01:11:17 460
en2 English Edvard 2016-02-11 00:52:17 446
ru5 Russian Edvard 2016-02-11 00:38:52 2033 Мелкая правка: 'rod\limits{j=1, j\ne' -
ru4 Russian Edvard 2016-02-11 00:04:13 989
en1 English Edvard 2016-02-10 23:45:06 696 Initial revision for English translation
ru3 Russian Edvard 2016-02-10 23:40:09 649
ru2 Russian Edvard 2016-02-10 23:23:31 600 Мелкая правка: 'равентсво с числом $x$, если' -
ru1 Russian Edvard 2016-02-10 23:13:44 883 Первая редакция (опубликовано)