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

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

Всем привет!

10 апреля, в 19.00 MSK состоится Topcoder SRM 616.

Предлагаю после контеста обсудить здесь задачи.

GL & HF

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

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

Не 9-го же, зачем так рано писать?

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

    Понятно же, зачем — чтобы опередить других претендентов на авторство подобного поста.

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

      Я думал смысл не в первенстве, а в плюсиках, а оно вон оно чё.

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

        Ну да, в плюсиках, но они будут у того, кто будет первым.

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

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

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

      Это верно

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

      Это мне непонятно. Если человек после SRMа зайдёт обсудить задачи сюда, то он увидит пост наверху /* куда я его только что поднял */. А если человек просто хочет быть в курсе расписания SRM'ов, так на то есть более высокотехнологичные способы.

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

        Согласен. Календарь соревнований (где есть большинство контестов) + напоминания — все это отлично работает.

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

У меня одного арена лагает? Иногда, например, кнопки не реагируют (компиляция или вход). Помогает перезапуск, но как-то после третьего раза за контест мне надоело.

Java 1.7.0_51, арена скачана с сайта перед началом.

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

Это чувство, когда ты создал пост, но никто не хочет обсуждать задачи...

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

    А что там обсуждать? :)

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

      Как делать 1000 например?

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

      и 500 Div1? :)

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

        1)Пусть x[i] = value[i + 1] / value[i] — 1 при 0 <= i <= n — 2 и x[n — 1] = INFINITY.

        2)Тогда для любого типа монет можно получить любое их количество в диапазоне от 0 до x[i] за один запрос.

        3)Пусть было k запросов. Как понять, что мы смогли различить все типы? Для этого необходимо и достаточно, чтобы никакие две маски не совпадали(маски i-типа — вектор длины k, элементы которого — количество монет i-го типа при 1,2,..,k запросе). При этом для i-го типа в маске не должно быть элементов, больших x[i](следует из п.2), и маска не должна быть нулевой.

        4)Отсюда решение: отсортируем массив x[i]. Будем перебирать k(от 1 до 6). Для фиксированного k посчитаем count[max] — число масок, каждый элемент которых не больше max(по формуле count[max] = (max + 1) ^ k — 1). Тогда, если для любого 0 <= pos <= n — 1 x[pos] < dp[x[pos]], то k подходит, иначе — нет.

        5)Единсвенное, что осталось — это аккуратно обработать элементы с большим x[pos] и вернуть наименьшее k.

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

          насколько я понимаю, dp==cnt. Но не понятно почему делаем проверку pos < dp[x[pos]] (кстати здесь опечатка). Почему не n-1 < dp[x[pos]] для всех pos.

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

            Да, там есть две опечатки: dp это на самом деле count, и проверка должна быть pos < dp[x[pos]].

            Почему именно pos < dp[x[pos]]? Данное условие необходимо, чтобы префикс, заканчиваюшийся в позиции pos, можно было покрыть подходящими масками. Чтобы покрыть префикс, заканчивающийся в позиции 0, хватит 1 маски. Для префикса, заканчивающимся в 1, нужно 2 маски. Видно, что для префикса закинчивающимся в pos нужно(и достаточно) pos + 1 маск.

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

              Спасибо. Дошло. Как вообще нужно тренироваться решать такие задачи?

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

Мой код на 1000 Div2 не проходит (WA) единственный тест с пустой матрицей 20x20 (test 24). Причем, например, с максимальной пустой матрицей 30x30 (test 8) все хорошо, как и с остальными тестами.

Может у кого была такая же проблема? Кто как решал?

UPD: Похоже что div2 1000 != div1 500