Блог пользователя EG0R

Автор EG0R, 10 лет назад, По-русски

Ребят кому то уже пришла футболка? И вообще в каком периоде времени они должны приходить?

UPD: По поводу Украины, сказали что у них проблемы с отправкой футболок в Украину, так что пока не ждать.

UPD2:

"Здравствуйте, уважаемые участники отборочного раунда RCC 2014!

По независящим от нас причинам почтовые отправления на Украину в данный момент возвращаются обратно к нам в офис. Как только появится возможность отправить вам футболки, мы незамедлительно это сделаем и сообщим вам об этом. До этого момента ваши футболки будут хранится у нас в офисе. Если у вас есть возможность получить посылку на адрес вне Украины, сообщите нам об этом и мы отправим вам посылку на этот адрес.

Приносим извинения за возникшие неудобства."

UPD3:

Доставка футболок в Украину началась.

"Здравствуйте, Egor! С радостью сообщаем, что сувенирная футболка за участие в конкурсе Russian Code Cup отправлена на Ваш почтовый адрес."

Полный текст и комментарии »

  • Проголосовать: нравится
  • +13
  • Проголосовать: не нравится

Автор EG0R, 11 лет назад, По-русски

Задача А — Ваня и карточки

Решение задачи заключается в том, что бы просуммировать все числа которые записанны на карточках, и пытатся эту сумму свести к нулю за минимальное количество операций, используя операции +х и -х.

Решение А

Задача Б — Сережа и контесты

Поскольку ограничения в этой задаче не очень большие, то можно написать простой жадный алгоритм. Вначале обозначить в массиве номера контестов которые запомнил Сережа, как занятые. Для нахождения максимального количества контестов, нужно посмотреть сколько ячеек, номера которых меньше за х, еще не заняты. Это и будет максимальный ответ. Для нахождения минимального количества, нужно пройтись по массиву и пытаться как можно больше вставлять контести типа "Div1+Div2" — это можно будет сделать, если будут свободны две подряд ячейки нашего массива. Если же нельзя вставить контест типа "Div1+Div2", тогда в свободный номер забиваем контест типа "Div2". Проделав такие операции, мы узнаем минимальное количество контестов.

Решение Б

Задача С — Команда

Эту задачу можно было делать несколькими способами, я расскажу Вам об одном из них. Обозначим количество карточек на которых записано 0 — n, а количество карточек на которых записано 1 — m. Тогда можно сделать нужную последовательность когда (n - 1 <= m && m <= 2 * (n + 1)).

Если же все таки можно сделать нужную последовательность, рассмотрим 3 случая:

  1. (m == n - 1). Тогда выводим единички и нули через один, но обязательно начинаем с 0.

  2. (m == n). Тогда выводим единички и нули через один, но тут мы можем начинать и с 0, и с 1

  3. (m >= n + 1 && m <= 2 * (n + 1)). В этом случае нам обязательно нужно начинать с 1 и выводит единички и нули через один. В конце тоже должна быть обязательно единичка. Если мы доходим до конца но единички еще остались, то пытаемся прилепить по одной единичке к тем что у нас есть. Например у нас было 10101, у нас осталось две единички, делаем сначала 110101, а потом 1101101. После таких операций мы получим правильный ответ.

Решение С

На счет того что некоторые решения не проходили 11 тест на FPC, но проходили на Delphi, то в этой ситуации участник должен был понимать, что на Паскале вывод займет достаточно много времени, и он должен был или как-то оптимизировать решение, или же написать в другой среде.

Задача Д — Роман и числа

Эту задачу можно отнести к теме динамическое программирование. Используя маски для запоминания взятых уже цифр мы можем с помощью динамики очень легко решить эту задачу. Пускай у нас будет динамика — dp[i][x], где i — маска перестановки, а х — это остаток от деления данной перестановки на m. Будем перебирать сами маски и остаток. При добавлении цифры a[j] будем использовать такой переход:

dp[i or (1 shl (j-1)),(x*10+a[j]) mod m] := dp[i or (1 shl (j-1)),(x*10+a[j]) mod m] + dp[i,x];

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


for i:=0 to 9 do for j:=2 to b[i] do ans:=ans div int64(j);

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

Решение Д

Задача Е — Олимпиада

Для начала в этой задаче нужно было понять, что пару учеников мы могли задавать в виде прямоугольника. Тогда расстояние между учениками это диагональ прямоугольника. Пускай первый ученик находится в точке (x1,y1), а второй в точке (x2,y2). В этом случае нам нужно что бы выполнялись два условия:

  • L*L <= (abs(x1-x2)*abs(x1-x2) + abs(y1-y2)*abs(y1-y2)) <= R*R

  • gcd(abs(x1-x2),abs(y1-y2)) == 1

Так как поле может быть 100000*100000, то понятно что перебор значений abs(x1-x2) и abs(y1-y2) займет достаточно много времени. Поэтому будем перебирать только одно значение, а количество вхождений второго вычислять из нашего неравенства:

  • L*L <= (abs(x1-x2)*abs(x1-x2) + abs(y1-y2)*abs(y1-y2)) <= R*R

  • L*L - abs(x1-x2)*abs(x1-x2) <= abs(y1-y2)*abs(y1-y2) <= R*R - abs(x1-x2)*abs(x1-x2)

Количество вариантов разместить наш квадрат на поле n*m будет (n-abs(x1-x2)+1)*(m-abs(y1-y2)+1). Вычисление суммы (n-abs(x1-x2)+1) не очень сложное, но вот что бы вычислить сумму (m-abs(y1-y2)+1), где (L*L<=abs(x1-x2)*abs(x1-x2)<=abs(y1-y2)*abs(y1-y2)<=R*R-abs(x1-x2)*abs(x1-x2)), будет немного тяжелее. Нужно использовать метод включения-исключения и найти сумму чисел на отрезке, которые делятся хотя бы на один из простых множителей нашего числа abs(x1-x2).

К сожалению, по моей вине, в раунд попала задача которая ранее была использована на другом соревновании. Так как это не соответствует правилам Codeforces, задача E будет удалена.

Решение Е

Хочу сказать спасибо Сергею Орышичу (Oryshych) за помощь в написании разбора.

Полный текст и комментарии »

Разбор задач Codeforces Round 235 (Div. 2)
  • Проголосовать: нравится
  • +44
  • Проголосовать: не нравится

Автор EG0R, 11 лет назад, По-русски

Всем привет!

Совсем скоро, 10 марта в 19:30 MSK состоится Codeforces Round #235 (Div. 2), автором которого являюсь я. Это мой первый раунд, где я выступаю в качестве автора, и я надеюсь что не последний.

Хотелось бы сказать отдельное спасибо Геральду Агапову (Gerald) за огромную помощь в подготовке этого раунда, так же Роману Рубаненко (Rubanenko) и Сергею Орышичу (Oryshych) за помощь в тестировании задач, а Марии Беловой за перевод условий на английский.

Желаю Вам получить удовольствие от решения задач и вынести с этого раунда для себя что-то полезное:)

Разбалловка раунда: 500-1000-1500-2000-2500

GL & HF!

Первая пятерка:

  1. UESTC_XHXJ

  2. GoodByeAhu

  3. OrzSKYDEC

  4. simonlindholm

  5. angelyue

Так же хочу отметить участника hoanglmdiv2, единственного из Див 2, кто решил задачу Е.

К сожалению, по моей вине, в раунд попала задача которая ранее была использована на другом соревновании. Так как это не соответствует правилам Codeforces, задача E будет удалена.

Разбор на русском

Полный текст и комментарии »

  • Проголосовать: нравится
  • +114
  • Проголосовать: не нравится

Автор EG0R, 11 лет назад, По-русски

Всем привет. Произошла проблема с компьютером. Ни один из браузеров не загружает страницы(вообще). Интернет в норме. Skype работает нормально, в обычном режиме, можно говорить, создавать видеоконференции и т.д.

Я проверил компьютер на наличие вирусов антивирусниками — Eset Smart 6, Dr.Web, но снова ничего.

Проверил файл hosts тоже все в норме.

Проверял параметр AppInit_DLLs, не помогло.

Настройки прокси-сервера стандартные.

Кто знает, как решить проблему?

Полный текст и комментарии »

  • Проголосовать: нравится
  • -2
  • Проголосовать: не нравится

Автор EG0R, 11 лет назад, По-русски

11-13 октября 2013 года будет проходить южно-восточный европейский полуфинал мира студенческой олимпиады с программирования ACM-ICPC. Уже во второй раз олимпиада пройдет в он-сайт режиме в двух университетах:

  • Бухарестский политехнический университет\ Румыния
  • Винницкий национально технический университет\ Украина

Олимпиада будет проходить в одно и то же время, на одном и том же наборе задач с общей таблицей результатов.

Так же можно посмотреть онлайн видео-трансляцию здесь

От себя пожелаю командам удачи, и пусть победит сильнейший.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +50
  • Проголосовать: не нравится

Автор EG0R, 11 лет назад, По-русски

Вот и подошло к концу IOI 2013.

Результаты Украины не так хороши как хотелось бы, но все же ни один украинец не приедет домой без медали. С этим я поздравляю наших ребят!

Первый тур был более-менее неплохой для нас!

Роман Фурко (Furko) довольно неплохо выступил и взял на первом туре 233 балла, что позволило ему приблизится к "Золоту".

Роман Рубаненко (Rubanenko) набрав 167 баллов уверенно держался в "серебре".

Илья Шевченко (Scorpy) с немалым риском, за несколько минут до конца добил первую задачу на 100 баллов, тем самым обеспечив себе после первого тура место в "бронзе", но довольно близко к "серебру".

Дмитрий Федоряка (fedimser) же показал всю свою силу во втором туре! Набрав 190 баллов(максимальный результат Украины во втором туре), тем самым обеспечив себе место в "бронзе".

К сожалению второй тур для большинства участников Украины был не очень удачным, и это понизило их позиции в общем списке.

Результаты Украины в 2013 году таковы:

59/Фурко Роман(Furko)/416 баллов/cеребро

113/Роман Рубаненко(Rubanenko)/289 баллов/бронза

124/Илья Шевченко(Scorpy)/264 балла/бронза

132/Дмитрий Федоряка(fedimser)/253 балла/бронза

Поздравляем вас ребята!

Так же хочу поздравить участков с России, которые показали всю свою силу на международной арене взяв 3 золотых медали и 1 серебряную.

Полный текст и комментарии »

  • Проголосовать: нравится
  • +39
  • Проголосовать: не нравится

Автор EG0R, 12 лет назад, По-русски

17 марта началась ХХVI Всеукраинская олимпиада по информатике. Она проходила в Луганске и длилась 5 дней.

18 и 20 марта были проведены туры которые включали в себя по 4 задачи каждый и длились по 5 часов.

Задачи были приготовлены четырьмя студентами, ранее достигших немалых высот в программировании. Как по мне то задачи были более сложные чем в предыдущий год. Но это не помешало Роману Фурко (Furko) стать победителем олимпиады набрав 645 баллов из 800, и сделав из 8-ми задач 6 на полный балл. С этим я его и поздравляю!)

Завтра же состоится самая интересная часть всей олимпиады, а именно награждение)

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

Полный текст и комментарии »

  • Проголосовать: нравится
  • +20
  • Проголосовать: не нравится