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

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

Привет сообществу CodeForces!

Я (как и все на КФ) не раз принимал участие в разных турнирах по программирования. Каждый турнир проводится по своим правилам. Немножко погуглив я нашел всего 3 вида турниров: ACM, KIROV, OLYMPIAD.

Поскольку я ещё школьник, то принимаю участие во Всеукраинской олимпиаде по информатике. Она состоит с 4 этапов ( I – школьный, II – региональной, ІІІ – областной, IV – всеукраинский). Я хочу рассказать Вам как у нас, в Винницкой области, проводится ІІІ этап и услышать Ваше мнение о некоторых нюансах олимпиады.

Проводится ІІІ этап на базе Физико-математической гимназии № 17 г. Винница и их не безызвестного сервера (здесь кроме отбора команды области на финал UOI проводяться такые престижне для Украины соревнования как NetOI и «Турнир чемпионов» ).

И так все начинается с того что участникам раздаются условия задач (всего 4 задачи). Каждое условие делится на 4 подпункта:

1 – само условие

2 – формат ввода

3 – формат вывода

4 – примеры

Хочу заметить, что такого пункта как ограничения на время работы и память нету! Ну, если лимит на память не задается явно, но ясно, что он ограничен где-то в районе 32-64 Мб, чего вполне хватает на все задачи, то отсутствие лимита времени — это катастрофа. На самом деле тайм лимит формируется по такому методу: время_решение_авторской_программы_на_тесте * 1,5, то есть если авторское решение отработало на тесте за 0,07 сек то лимит для участников будет 0,07*1,5 = 0,1 сек. Эта система не совершенна поскольку било такое что программа отработала на тесте за 0,1 сек и там стоит ТЛЕ, а на более «тяжёлом» тесте за 1,7 и там ОК. Жури аргументирует применение этого метода тем, что когда участник знает лимит времени, то он не ищет самое оптимальное решение а пробует «просунуть» решение через тайм лимит. Замечу что тайм лимит для всех тестов разный:

Оригинал.

Когда участник написал код решение, он должен отправить его на проверку. И тут ещё одна проблема. Участнику доступно два меню: «Отравить решение на проверку», «Сдать решение на финальную проверку». И так если открыть первое меню и отослать по нему решение, то оно будет скомпилировано и проверено на тестах с условия (то есть это меню служит для проверки правильности формату ввода/вывода и компиляции программы на сервере на этом список функций заканчивается). Если отослать решение по втором меню, то решение будет отослана на системною проверку, а вам прейдет уведомление что решение успешно отправлено на этом все. Отослать решение через такое меню можно ТОЛЬКО ОДИН РАЗ за весь турнир и если Ви уже отослали решение и нашли ошибку, то больше не сможете перепослать решение. Системное тестирование проходит после турнира и узнать правильна идея решения под час турнира НЕВОЗМОЖНО. Баллы начисляются только за пройдённые тесты, за тесты с условия начисляется по 0 балов.

Оригинал.

Самое интересное, что на финале UOI (как и на IOI) решения сразу же после посылки тестируются на полном наборе тестов и в зависимости от количества пройдённых групп получают баллы (то есть по правилам KIROV).

После всего выше сказанного у меня к вам пара вопросов:

  • как называется вид турниров, что проводится у нас (в Винницкой области)

  • рационально ли по таким правилам проводить турниры для школьников

  • как можно заставить жури проводить турнир по правилам KIROV (как и финал UOI).

Спасибо за внимание)

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

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

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

Всем доброго времени суток! Недавно изучил алгоритм Дейкстры и его реализацию с помощью контейнера set. Но для того чтобы он (алгоритм) работал верно нужно было держать в контейнере данные типу pair что уменьшало скорость работы, поэтому я решил написать к контейнеру компаратор:

struct cmp { bool operator()(int a, int b) const { return d[a] < d[b];} };

здесь массив d[] хранит кратчайшее расстояние к вершине i;

Когда я попробовал добавить в контейнер число b, такое что d[a]==d[b] и a!=b, то ничего не произошло (то есть нужное число не добавилось в контейнер а релаксация вершины прошла) и как последствие неверная работа алгоритма :(

Возможно ли как-то это исправить (обойти проблему), или придется пользоваться контейнером с pair? Можно ли это реализовать с помощью других встроенных структур данных?

P.S.: За ранние всем спасибо :)

UPD: Проблема решена, но вопрос реализации с помощью других структур остается открыт.

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

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

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

Нужно сгенерировать координаты N (1 <= N <= 300) точек, таких что любые три точки не лежат на одном отрезке. Нужно что-бы координаты точек были не больше по абсолютной величине 10000.

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

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

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

Задан прямоугольник. Стороны прямоугольника параллельны осям координат, а две противоположные вершины расположены в точках (x1, y1) и (x2, y2). Задана окружность с центром в точке (x3, y3) и радиусом r. Нужно найти сколько точок лежат в прямоугольнике и окружносте одновременно.

Ограничения: Целые числа x1, y1, x2, y2 (−100 000 ≤ x1 < x2 ≤ 100 000; −100 000 ≤ y1 < y2 ≤ 100 000). Целые числа x3, y3, r (−100 000 ≤ x3, y3 ≤ 100 000; 1 ≤ r ≤ 100 000).

Семпл:

Input:

0 0 5 4 \прямоугольник

4 0 3 \окружнось

Output:

14

Как её решить?

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

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

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

Условие: На прямой дощечке вбиты гвоздики. Любые два гвоздика можно соединить ниточкой. Требуется соединить некоторые пары гвоздиков ниточками так, чтобы к каждому гвоздику была привязана хотя бы одна ниточка, а суммарная длина всех ниточек была минимальна.

Входные данные В первой строке записано число N — количество гвоздиков (2 <= N <= 100). В следующей строке записано N чисел — координаты всех гвоздиков (неотрицательные целые числа, не превосходящие 10000).

Выходные данные Нужно вывести единственное число — минимальную суммарную длину всех ниточек.

Семпл:

Входные данные: 6 3 4 12 6 14 13

Выходные данные: 5

У меня нету идей как её решить. ПОМОГИТЕ!!!!!

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

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

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

Условие задачи.

Помогите понять первый тест. По всех моих подсчётам там ответ "NO".

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

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

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

Есть задача. Я ее уже несколько раз делал, но ни одна программа не прошла тесты. Помогите ее решить. Заранее спасибо.

Я не могу понять какая строка верна (за условием):

1 10 100 1000 10000 1001 1002 ... 1099 101 1010 1011 ... 1019 102 ...

или

1 10 11 12 ... 19 100 101 ... 199 1000 1001 1002 ... 1999 10000 ...

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

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

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

Имеется задача: Забавная игра

Пожалуйста напишите свое решение этой задачи.

Чтобы это не виглядело как плагиат, то я викладиваю ссылку на Мое решение задачи (неполное)

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

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