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

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

Состоится сегодня в 15:00 по Москве

Имеется призовой фонд в $5000, так что поспешите с регистрацией, кап может быть достигнут досрочно

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

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

И все же кап не набрался.

»
13 лет назад, # |
  Проголосовать: нравится -7 Проголосовать: не нравится

на редкость дерьмовый SRM

разбери-100500-гадостных-случаев в 250-ке, недооцененной авторами раза в полтора по количеству баллов за неё; стандартная-хрень-с-дополнительным-хитрым-ограничением в 550-ке (интересно, почему я не увидел фраз типа: "в каждой пятой доске количество красного не должно превышать корня из произведения зелёного и синего" или "16-ая доска не должна содержать синий компонент, если Марс находится под влиянием Сатурна")

да, вот 950-ку не осилил, сказать про неё ничего не могу хорошего

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +18 Проголосовать: не нравится

    Раунд еще не закончился.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    +1. По 250-ке у меня вообще идей нет. а 550 зафейлил где-то, у меня очень много кода вышло, не успел отдебажить. Интересно посмотреть как написать это быстро, и чтобы в ТЛ вписалось, ведь RSQ за Log^3N должен всяко ТЛ получать.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      А чем обычные частичные суммы плохи?

      • »
        »
        »
        »
        13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Я подумал об этом, подумал, но не педставилось мне как это работает не в одномерном случае, потому начал писать другую штуку, которая по сути делает то-же самое

        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
            Проголосовать: нравится -8 Проголосовать: не нравится

          Обидный СРМ. Частичные суммы написал, но нашел баг через 1 после конца :( 250 сперва не увидел ограничения на 10^9 и написал втупую, потом пришлось срочно переписывать и ресабмитить :) так что я недалеко от тебя тут.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Это как же должен был не понравиться матч, чтобы вот так, еще до его окончания, высказать все хорошее и не очень о задачах)

    На самом деле, 250 не такая уж страшная (посмотрим, пройдет ли у меня... Но идея вроде бы нормальная... и никаких случаев особых нету), по крайней мере, до начала челленджей. Буду надеяться, что через минуту ничего не измениться)))

    А в 550 это дополнительное хитрое ограничение действительно портит всю малину:)

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      это должен очень сильно не понравиться :)

      возможно, я просто избалован нормальными СРМами с хорошими и интересными задачами, но в этом не хотелось даже ничего писать

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      А что за ограничение имеется в виду?

  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

    1 случай, не? l>r

    (тут было число 550, но маркап думает, что 1). Коряво написанное но 2 условия по факту: Входит в большой куб, не входит в маленький.

    • »
      »
      »
      13 лет назад, # ^ |
      Rev. 2   Проголосовать: нравится +19 Проголосовать: не нравится

      Уважаемый, MikeMirzayanov! Реквестируем фичу сказать Codeforces, что он не умнее пишущего, и что-то надо парсить так как написали, а не так как хочется эвристикам.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится -8 Проголосовать: не нравится

      странно, в 250-ке как минимум ещё трава с +/- и аккуратные +1 везде по коду

      а если ты думаешь, что 550-ка — нормальная задача, то полистай код Петра ;)

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    550я нормальная задача без случаев. А 250ка мне не понравилась видимо потому что она у меня упадет и я сделал по ней 2 неудачных челенджа

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    250-я простая и без случаев.

    У тебя есть система из n-1 уравнений и n неизвестных. Причем уже в треугольном виде. Пусть a[0] = x. Тогда a[i] = A[i]*x + B[i]. A*x + B — прямая. Значит есть 2 случае. Прямая положительна от (-INF, -B / A) или от (-B / A, +INF). Пересекаем все полученные отрезки — ??? — PROFIT.

    Я сдал её на 150 баллов потому что долго тупил. Так норм задача.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +20 Проголосовать: не нравится

    А по-моему, нормальные 250 и 550, ну чуть техничные. Про 950 не знаю, не читал, потому что даже 550 не додебажил, но это проблема не задачи, а моя.

    А когда в решении возникает слишком много случаев, это ещё не значит, что все возможные решения задачи разбирают слишком много случаев.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +5 Проголосовать: не нравится

      это не значит, что решения, разбирающие меньше случаев, оказываются проще для понимания и написания

      а вообще мне надоело спорить; моё мнение останется со мной, и я безмерно рад за вас, если вам понравились задачи

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +29 Проголосовать: не нравится

    Я не согласен ни по одному из пунктов (обе задачи вполне нормальные, как и относительная сложность), ни с публикацией комментов до окончания СРМа

»
13 лет назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Ну почему нельзя почеленджить себя, когда нашел багу за 10 секунд до конца и не успел отправить. упавшая 250-ка совсем бы окупилась челенджами.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    На самом деле, понятно почему же.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +13 Проголосовать: не нравится

      Спасибо, кэп. Ну можно же по ныть?

      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +11 Проголосовать: не нравится

        Ну можно ж подоставать нытиков, когда ты нормально написал рануд;)

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Паш мне не хватило пары секунд, чтобы тебя почеленджить. Я долго сомневался челенджить или нет. Кстати у меня easy тоже упадет

»
13 лет назад, # |
Rev. 3   Проголосовать: нравится -10 Проголосовать: не нравится

А у меня стойкое ощущение, что моя 250 на чем-нибудь упадет.

Не может быть так просто:)

Ощущение было не зря

upd2 Да, надо еще и нижнюю границу держать, а не только верхнюю.

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

взломы по int overflow? говнораунд детектед

»
13 лет назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

Придумала решение по 950, не успела. Посмотрите, похоже ли на правду.

Идея основана на китайской теореме об остатках. Будем решать задачу отдельно по модулям 2 и 5, потом перемножим ответы. Разобьем числа в позициях от 0 до N-1 на две группы: которые попадают в хотя бы один запрос с ненулевым произведением и которые ни в один такой запрос не попадают. Некоторые из чисел второй группы должны быть нулями, чтобы удовлетворить все нулевые запросы. Остальные числа из второй группы могут быть чем угодно, это ни на что не влияет.

Количество вариантов для второй группы считаем динамикой d[i][j] — количество способов расставить числа до i-го, чтобы последний ноль стоял в позиции j. Если у нас не удовлетворяется какой-то нулевой запрос, заканчивающийся в текущем i — перехода не делаем.

Что касается первой группы, то в случае модуля 2 все тривиально — мы должны поставить во все такие позиции 1. В случае модуля 5 записываем систему равенств, которую получаем из ненулевых запросов. Берем дискретный логарифм -> приходим к СЛАУ, количество решений которой определяем Гауссом.

Ответы для первой и второй групп перемножаем.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Когда мы взяли дискретный логарифм мы перешли к , в котором не хорошо делить на 2. Как там делать Гаусса?

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Вот из-за этой проблемы я и не успела. Но вроде бы, Гаусса делать можно.

      На очередном шаге выбираем, какую строчку поставить первой. Если есть строчка с коэффициентом 1 или 3 — отдаем предпочтение ей. Если есть строчки только с двойкой — их можно вычитать друг из друга, ни на что не деля. Прямой ход сделать получилось.

      Что касается обратного хода, то там уравнения с первый коэффициентом два накладывают ограничения, что вся остальная часть уравнения должна быть четной. Это приводит к некоторой СЛАУ по модулю два, для которой можно найти количество решений. Еще нужно учитывать, что при делении на два получаются два корня.

      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +13 Проголосовать: не нравится

        Чтобы посчитать количество решений по модулю 4, можно просто предположить что это система по модулю 2 (просто взять все коэффициенты по модулю 2). После этого найти количество решений системы и возвести полученное число в квадрат.

        Я правда, не совсем понял почему это верно, но зашло в дорешивании, на контесте подбирал нужную степень двойки на которую нужно домножить, но так и не подобрал, потому как набажил в коде нахождения ранга матрицы :)

        • »
          »
          »
          »
          »
          13 лет назад, # ^ |
          Rev. 4   Проголосовать: нравится +8 Проголосовать: не нравится

          Пример: x1 + x2 = 2, x1 + x2 = 0. По модулю 4 система не имеет решений, по модулю 2 у нее два решения. Что-то не так(

          • »
            »
            »
            »
            »
            »
            13 лет назад, # ^ |
              Проголосовать: нравится +8 Проголосовать: не нравится

            Я вообще сильно удивился, когда прошло :) Действительно идея неверна, сам себя счелленжил в дорешивании тестом: N=2, Qfrom[] = {0,0}, Qto[] = {1,1}, output = {9,1}.

            Получается, что тесты на ТС совсем неполные.

            • »
              »
              »
              »
              »
              »
              »
              13 лет назад, # ^ |
              Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

              (Палево) По-видимому, правильно искать количество решений системы по модулю 2 и количество решений тоже по модулю 2 системы, у которой коэффициенты матрицы такие же, а от свободных коэффициентов берутся старшие биты. И перемножать.

              • »
                »
                »
                »
                »
                »
                »
                »
                13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится

                Так тоже пробовал, но на одном из семплов это не работает. Вторая система получается несовместна, хотя первая имеет решение.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  13 лет назад, # ^ |
                    Проголосовать: нравится 0 Проголосовать: не нравится

                  Да, поняла, что это тоже палево.

                • »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  »
                  13 лет назад, # ^ |
                    Проголосовать: нравится +8 Проголосовать: не нравится

                  Вообще довольно интересно, как искать количество решений системы, если эта система не по простому модулю. Может кто-то знает как это делать в общем случае?

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Вроде стало понятно, как посчитать количество решений системы по произвольному модулю вида pk. Будем делать Гаусса с выбором главного элемента по всей матрице. В качестве главного элемента выбираем такой, который делится на наименьшую степень p. Получаем, что каждая правая-нижняя квадратная подматрица делится на ту же степень p, что и главный элемент. Если в столбце свободных коэффициентов что-то не делится — ответ 0. Иначе после завершения прямого хода Гаусса при необходимости дополняем матрицу до квадратной нулевыми строками и перемножаем элементы на главной диагонали (заменяя нули на pk). Это и будет количество решений системы.

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    У меня в общих чертах такое же решение, только с одним нюансом — если рассмотреть частичные произведения в каждой группе из не-нулей то можно решение СЛАУ заменить на dfs, т.к. в каждой строке матрицы будет по 2 ненулевых элемента

»
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Такой вопрос: куда денутся деньги, которые должны бы по идее достаться мне (за 1 место в комнате), но не достанутся из-за того, что нет 18?

  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +5 Проголосовать: не нравится

    Тебе предложат выбрать благотворительную организацию, в которую отправят деньги

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +4 Проголосовать: не нравится

      А можно конкретней узнать, где можно совершить выбор? А то прошлый раз мне ничего не пришло, и сам я ничего такого не нашел. В этот раз хотелось бы использовать эту возможность.

»
13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится

Запись моего слива :)

»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

"_Prize winners will be notified via e-mail within 10 days of the completion of the tournament that they have won a prize_"

Кто-нибудь уже получил email?

  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится

    Да я и после первого их срма не получил, не говоря уже о втором.