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

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

Через час начнется TCO Round 1A.
Предлагаю обсудить здесь задачи после конца соревнования.

Обратите внимание, что для регистрации в арене нужно было зарегистрироваться на сайте TCO заранее

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

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

Ну и собственно парочка вопосов от меня:
Правильно ли я понимаю, что:

  • рануд ретинговый
  • раунд без разделения на дивизионы
  • задачы на таких раундах обычно значительно легче задач div1?
  • »
    »
    12 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Рануды на ТС редко на рейтинг влияют. А вот раунд этот — рейтинговый, до первой серьезной проблемы)

    Разделения на дивизионы нету.

    Задачи... С учетом того, что тут фактически отсутствуют топ-200 мира, а так же принимает участие второй дивизион — логично, что должны быть проще. В прошлом году была халва, в этом немного поменяли систему квал. раундов... Но первая квала вроде как была... И должна быть опять халва. Целая толпа решит все 3)

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

А этот раунд будет как обычный раунд(сколько он длится?)

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

    Правила:

    Each Online and Onsite Round of the Algorithm Competition consists of three phases: Coding Phase, Challenge Phase, and System Testing Phase. (Note: The format of these competition rounds is similar to the format of TopCoder Single Round Matches. The rules in place for Single Round Matches as of March 31, 2012 will also apply to the online and onsite rounds of the Algorithm Competition, with the exception of the Unused Code Rule during the onsite rounds.)

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

Можно же играть в любом из раундов 1A, 1B, 1C, они равноценные?

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

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

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

сколько человек проходит?

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

ТСО — это халявный рейтинг, главное не тупить)

Вначале надо просто быстро нарезать халву; а в следующих раундах — красиво нагибать красных ветеранов, которые уже далеко не красные) Но экспу за которых дают, как за красных.

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

    Главное не тупить

    Ах, вот в чем секрет успеха-то. Научишь не тупить?) Массивы маленькие не объявлять и int'ы не умножать тоже?)

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

      Ок. Главное не тупить слишком сильно) Т.е. реально тут получить плюс намного проще, чем на обычных раундах.

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

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

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

      не тупить. Например не делать как я сегодня. вторая не прошла потому что написал 1<<(x) вместо 1LL<<x

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

        Будет урок на будущее.

        Мне хватило раз погореть на таком, чтобы начать юзать это через раз, и еще раз, чтобы потом писать ll везде, где у меня хоть какая-то переменная может быть хотя бы больше 20, пусть даже не та, на которую шифтую:)

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

Up to 350 Competitors with highest Ranks during Online Stage 2 (as defined above) Limited edition 2012 TopCoder Open t-shirt

так, а кто майки получает то?

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

    The Algorithm Competition will award T-shirts to the 350 Competitors with highest Ranks, where a Rank of a competitor is defined as the best taken place out of all Online Rounds of Online Stage 2 in which this Competitor achieved a score greater than zero.

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

за час до контеста написали? почему не за 20 минут? или чтобы вам подняли рейт, нет разницы во сколько писать?

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

    Такое впечатление, что Вам весь мир что-то задолжал...

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

      да нет, я к тому что человек просто по-видимому создал тему для поднятия себе рейтинга, а не для напоминания

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

    Наверное, если тема создана не за 20 минут, а за час, то больше вероятность того, что те, кто собирался участвовать, но забыл про раунд, её увидят.

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

    Вспомнил, зарегался, посмотрел — не написано — написал.

    problems?

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

как решалась вторая??

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

Раунд не понравился.

3 халвы. Из них нормальная задача — только вторая. Потому что в ней думать надо, хотя бы минимально.

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

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

Дальше третья. Вот за такую третью надо ломать руки и ноги. Даже я, человек, который в жизни ни разу не использовал тусат, и даже не знал до сегодня толком, как он работает, понял с условия, что надо мутить тусат. В результате 10 минут ушло на ознакомление с предметом, потом еще 15 минут пробовал честно кодить самостоятельно, потом забил и взялся сдирать... Содрать немного не успел:)

Какой смысл давать такую безидейную задачу на 1000? Пусть даже это первая квала ТСО, где надо дать что-то простое...

P.S. Да, я уже понял, что я тупой:)

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

    Вроде без 2SAT можно решить

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

    2SAT не будет работать, он не минимизирует ответ

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

      А как решать нормально?

      У меня, пока я знакомился с 2SAT, вообще возникло легкое подозрение, что в текущих условиях ответ всегда однозначный. Хотя теперь понимаю, что подозрение — это далеко не строгий факт.

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

        попробую объяснить, у меня как-то сложно и запутанно.

        сделаем записи такого вида для пар переключателей "x имеет такой же тип, как и y" или "x имеет противоположный тип, чем y". Это можно сделать, потому что степени лампочек не более чем 2. Тип — это нажмем мы переключатель или нет.

        Далее разбиваем граф переключателей на компоненты связанности, каждую компоненту пытаемся сделать двудольной по отношению "x имеет противоположный тип, чем y".

        Эти две доли проверяем на корректность, берем минимум из тех, кто корректный.

        На каждом этапе — проверка, получилось ли сделать его. Например, если одна из компонент не двудольна, то ответ сразу  - 1, если есть включенная лампочка, а переключателя для нее нет — тоже, и т.д. Много проверок...

        Объяснил плохо, посмотри мой код.

        P.S. Систестов не было, не знаю, пройдет или нет. Идейно вроде правильно

        P.S.S. Прошло. FUCK YEAH.

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

        Я думаю, что здесь просто система линейных уравнений по модулю 2. Не успел закодить...

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

        У меня получилась линейная с-ма по модулю 2, но не до конца уверен что это верно.

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

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

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

    Так в первой же есть решение и в 3 строки, хотя может оно не правильное, но я еще у многих кроме себя видел. Просто считаем сколько кто входит, потом если >= 2 то может быть победителем, иначе нет. Плюс частный случай когда всего один игрок.

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

      меня как раз зачелленжили на этом случае... обидно

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

      Ясно, что правильное.

      Пусть хотя бы 2 раза встречается — первым выпьет обе половины — выиграл

      Если 1 раз, то тот, кто пьет второй, если такой есть выпьет не меньше, чем мы.

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

Правильно я понимаю, что в 1000 meet-in-the-middle не зайдет? На раунде чуть-чуть не успел сдать, потом дописал — сэмплы проходит, правда у меня на компе под релизом работает 40 секунд, но на ТК компы помощнее, насколько я помню. Суть такая — перебираем 2^25 масок для первой половины выключателей, пихаем в map (отсюда логарифм, может рукописный hash_map уменьшит время работы в 25 раз и такое решение пройдет?), потом перебираем еще 2^25 масок — если получили mask, то ищем в map'е mask ^ init и обновляем ответ. В теории работает 2^25 * 25 ~= 8 * 10 ^ 8. Можно добавить hash_map и подсчет количества битов в числе за O(1).

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

    Там если учесть что максимум по 2 выключателя, то достаточно перебирать 2^25.

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

      Я совсем забыл про это условие и сейчас, честно говоря, не понимаю, как его использовать.

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

Серенький парень в моей руме сдал первую задачу с результатом 249.36, лучший результат по первой задаче среди всех. Наводит на мысль...

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

Как решается третья?

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

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

    Да так можно делать, там выйдет не более 2^25.

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

      И правда зашло, обидно, что так тупил и не успел(

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

Если я прошел в этом раунде, то дальше я квалы писать не смогу (вне конкурса)?

В прошлом году так было, и до этого, кажется, тоже. В этом, помню, прочел о каком-то соревновании, что одновременно с раундами будут матчи для тех, кто не прошел в этот раунд... Но у меня стойкое ощущение, что я попутал с VK Cup.

Хорошо хоть структуру второго раунда поменяли, с первого раза я вряд ли квалифайнусь, так что получу несколько дополнительных рейтед-ивентов)

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

    Да, путаешь с VKCup или чем-то еще.

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

    Правильно прочел, но это начиная со второго раунда (то есть будут параллельные раунды на основе 2B, 2C и 3B для прошедших)