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

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

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

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

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

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

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

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

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

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

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

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

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

  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 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.)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • »
    »
    15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

»
15 лет назад, скрыть # |
 
Проголосовать: нравится 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).

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

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

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

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

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

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

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

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

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