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

Автор Egor, 13 лет назад, По-русски
Добрый день.
Сегодня в 20:00 по Москве состоится первый отборочный раунд TopCoder Open. Во второй раунд пройдет 850 участников. Всем удачи!
  • Проголосовать: нравится
  • +49
  • Проголосовать: не нравится

13 лет назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится
а сколько всего раундов?
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Ну зачем, зачееееем? :'( Зачем вот сейчас в спонсорах TCO появился логотип Intel? То есть я не получу не то что гипотетической поездки на онсайт, но даже вполне реальной футболки, аналогичной прошлогодней, потому что она ведь даётся за участие в третьем раунде, а у меня как раз к тому моменту с "Интел" уже будет подписан трудовой договор. АРГХ!!!

P.S. Ну и, кстати, вот тут же на главной странице сайта TopCoder висит логотип AMD. Что называется, узрите, товарищи, наглядно лютую, бешеную капиталистическую конкуренцию :)
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +37 Проголосовать: не нравится

    flags: humour
    Меняю право участия в TCO на трудовой договор с Intel.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится
    Ну, в спонсорах TCO его пока-что нету. Хотя будет наверняка, да
    • 13 лет назад, # ^ |
        Проголосовать: нравится +20 Проголосовать: не нравится
      Блин, пока отходил от компа - уже появился
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Будешь у них как физик-ядерщик, или как программист? :)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да не, всё в порядке, я придумал, как избавиться от необходимости праведно гневаться на Intel. Достаточно просто слить :)
13 лет назад, # |
Rev. 2   Проголосовать: нравится -12 Проголосовать: не нравится

А условия узнать можно?
P.S. Похоже бессмысленный вопрос, потому что те, кто их знают сюда не зайдут в ближайшее время. :)

  • 13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Казалось бы если знать правила топкодера вопрос еще и не очень корректный
13 лет назад, # |
  Проголосовать: нравится -17 Проголосовать: не нравится

Да... Весело в одной руме с Петей быть) Смотрю - уже 3 250ки упало. Полистал лог - ага, Петя:)

Смотрю, четвертую уже завалили...

А Петя только открывает-закрывает 250 по своей схеме (по рейтингу автора от худших к лучшим).

Пятый автор остался без 250. Моя очередь все ближе.

Ага. Открыл мою. Ждем. Руки трясутся как на систестах. Ура! Закрыл! Значит, может быть, правильно:)


  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Я думаю все челленджи на ответ 2 * длину
    • 13 лет назад, # ^ |
        Проголосовать: нравится -7 Проголосовать: не нравится

      Судя по сорсах тех авторов - да:)

      Мне на самом кодинге показалось, что такого ответа быть не может, но я вообще тупил с задачей сильно))) Я сдал 250 медленней, чем 500. Хорошо хоть мое решение так написано, что проходит и такой крайний случай.

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Ага. У меня на этом 3 челленджа, при этом моя упадет на нем же. =(
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        у нас в комнате всего 3 и 2 из них я упустил, хнык
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Меня именно так и сломали. Надеюсь на вторую задачу :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Тоже протупил в этом месте. Условие в цикле > 0 вместо >= 0 написал, в итоге такой тест бы не прошел. Опомнился через полчаса, пофиксил, но уже сдал повторно только за 101 очко. Fail
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Все кроме одного - один товарищ зачем-то убирал сначала общий префикс.

      А вообще мне повезло с комнатой, да - в большинстве столько людей не набажили )
13 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится
Расскажите кто нибудь вкратце как тыщу решать.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится
    Перебрать всевозможные пересечения описанных множеств и их дополнений. Для каждого кусочка проверить, сколько в нем элементов и кому с максимальной ценой его можно продать.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Решение за 50^4
    У нас не более 50 не вайлдкардов в каждом разряде с весом 1 и все остальное с весом 1000 - сколько-то. Делаем таблицу 4й степени с количествами. Перебираем запросы в порядке убывания цены. Проходим по таблице и суммируем все ячейки, которые включает данная маска, при этом в самих этих ячейках ставим 0. Тогда у нас либо будет не более 50^3 таких ячеек, либо запрос вида *.*.*.* и после этого остальные запросы можно не обрабатывать
13 лет назад, # |
  Проголосовать: нравится -21 Проголосовать: не нравится

Пугали - трудно пройти дальше, трудно пройти дальше!

Одной задачи хватает, при том не феноменально быстро сданной)

13 лет назад, # |
  Проголосовать: нравится +10 Проголосовать: не нравится
ура, красный
  • 13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится
    Мои поздравления ))
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      спасибо :)

      повезло на самом деле, у меня в 500-ке обращение к несуществующему элементу вектора =)
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Поздравляю.

    А у меня скромные +93, за последние 40 дней в сумме +374, но до красного еще почти столько же:(

    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      зато хороший потенциал =) даёшь за 40 дней - в красные? :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Матчей маловато) Особенно с учетом того, что на Algorithm Round 4 я не надеюсь. Было 7 матчей за 40 дней, а теперь только 5.

        Но, в любом случае - постараюсь)

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

        Читайте новый роман Жюля Верна "В красные таргеты за 80 дней"
13 лет назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится
Я ошибаюсь, или опять был установлен новый рекорд рейтинга? (Выше всего на 3, но всё же:)
  • 13 лет назад, # ^ |
      Проголосовать: нравится -7 Проголосовать: не нравится
    не ошибаешься

    там какой-то серый в чате с ума сходил по этому поводу
  • 13 лет назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится
    Позабавило "всего на 3", примерно как сказать о прыжках в высоту "улучшил мировой рекорд ВСЕГО на 1 см.".
    Тем более, что здесь сложнее: оступись с таким рейтингом в  одном раунде, протеряешь баллов 150, и начинай по новой...
13 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
Алматинцы есть? Сегодня чёт все наши отстрелялись ужасно, может из за погоды? Когда так атмосферное давление пляшет, как всю последнюю неделю, у меня чёт голова взрывается, глазами пошевелить больно, кого-нибудь ещё такая же беда преследует?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Да тур ужас пришелся, я увидел 250 и сразу запаниковал использовать Java или С++
    потом на с++ все таки решился, набрал 194, сделал +50 на челлендж. И тут затупил
    Я то в 850 то проходил тогда... но нет мне надо было еще -150 не челленжде сделать.

    и прощай ТСО 11
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

кто нить может рассказать как решать 500? А то придумал решение за 

2^(n/2)*n (или что-то тип того), что скорее всего не проходило бы по времени.

  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Факт - если в следующей части идет дождь, то мы идем в послеследующую, иначе - в следующую
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      У меня лиса в другую сторону смотрела.
      Если i-я часть чистая, то мы в нее идем всегда, а если грязная - идем только тогда, когда (i-1)-я тоже грязная (из (i-2)-й).
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Если на дорожке сухо, потом k раз грязно, а потом опять один раз сухо - k/2 раз придётся прыгнуть в грязь. Разобьем путь на несколько таких дорожек. Понятно, что случайная величина - кол-во прыжков в грязь - равна сумме случайных величин типа такой: "если в i сухо, потом до j грязь а в j опять сухо, то (j-i-1)/2, иначе 0". По каждой можно отдельно посчитать мат. ожидание, оно тривиально - (j-i-1)/2 * (вероятность появления такой дорожки).
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Вот да, я как раз на подобном решении и потерял 25 очков и прохождение во второй раунд. Но почему мы можем считать матожидания для таких дорожек независимо? Ведь сами события наличия дорожек - они зависимы.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится +8 Проголосовать: не нравится

        Так как матожидание линейно даже для зависимых величин?
        • 13 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          Гы, спасибо. Мда, вот так никогда и не знаешь, какой именно прекрасно тебе известный факт из матчасти ты забудешь в следующий раз...
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Я 50 минут над ней тупил... В последние 30 секунд заменил Math.min(c[i-2],c[i-1]) на просто c[i-2] в одной строчке... В последние 15 секунд протестил, в последние 5 отослал. К моему большому удивлению оказалось правильно.

    Но я до сих пор не понял почему. Одно скажу - к 30 годам мозги тупеют. У меня это не первый случай когда я не могу сразу обосновать или доказать решение. Бесит меня это до крайности.

    Буду наверное в понедельник на работе разбираться.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Создал массив, в каждый элемент которого записывал среднее число попаданий в лужу далее по улице. Заполнял с конца. Тогда в нулевой ячейке всплывет ответ. Как справедливо заметил Egor (Да как же тут копировать ссылки на персональные страницы?!) Если в следующей клетке сухо, идем туда, иначе перепрыгиваем. Т.е. среднее число попаданий в лужу в i-й клетке будет равно ans[i] = (1-p[i+1])*ans[i+1] + p[i+1]*(1-p[i+2])*ans[i+2] + p[i+1]*p[i+2]*(ans[i+2] + 1). В последнем случае персонаж попадает-таки в лужу, поэтому к среднему числу луж, в которые он попадет далее, надо добавить единицу. 

    Мне известно ещё совершенно безумное решение по формуле включений\исключений, абсолютно очевидное ввиду терминов тервера, но понять его интуитивно я так и не смог =)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Тервером мат. ожидание разбивается на сумму тривиальных мат. ожиданий. Что там с включениями исключениями, интересно?
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Что-то типа такого. Возьмем две соседние лужи, посчитаем вероятность, что они обе есть и прибавим к ответу. Но конфигурации вида ### мы посчитали дважды, поэтому посчитаем количество их и вычтем. Теперь комбинации вида #### мы посчитали трижды с плюсом и дважды с минусом, а надо дважды, поэтому прибавим их и т.д.
        P.S решение не мое, а IrisM
        • 13 лет назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится
          Извращенцы, я-то анализировал комбинации типа .#######. :)
        • 13 лет назад, # ^ |
          Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

          А как быть с тем, что в конфигурации ### мы попадем один раз, в #### - два, в #####  - тоже два, а в ###### -три? Т.е. ответ зависит от четности длины конфигураций.


          P.s. Видимо это недокументированная фича формулы включений\исключений.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Я же описал, как быть. Вот в ### мы попали 2 раза, а надо 1, поэтому скомпенсируем. Вот в #### мы попали 1 раз, а надо 2 - скомпенсируем. Вот в ##### мы попали 3 раза, а надо 2 - скомпенсируем и т.д. Там как раз все как надо выходит.
            • 13 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

              Ага, спасибо, вижу. Но в голове не укладывается =)

              UPD. Я понял. Это не формула включений-исключений. Спать надо ночью.
      • 13 лет назад, # ^ |
        Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

        Рассмотрим индикаторы события "персонаж вляпается в i-ю лужу". Матожидание суммы индикаторов действительно превратится в сумму матожиданий, вот только как их посчитать? Матожидание индикатора равно вероятности, с которой наступает исследуемое событие. В то же время вероятность, с которой персонаж попадет в лужу в любом наборе из 2, 3, ... подряд идущих луж нам известна и легко считается. Поэтому сумму вероятностей заменяем вероятностью суммы, выражая сумму вероятностей по формуле включений\исключений.

        P.s. Снова перестал понимать это решение. Буду благодарен, если кто-нибудь объяснит, что я тут понаписал =)

        P.p.s. Это бред.
        • 13 лет назад, # ^ |
          Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

          Мои мысли при написании решения(на языке луж =) :

          Пусть r[i] = road[i]/100 - вероятность того, что i-я клетка является лужей.

           d[i] - вероятность что персонаж обязан "вляпаться" в i-ю лужу. Значит, он уже не "вляпался" (вероятность этого равна 1 минус вероятность "вляпаться") в предыдущую, которая тоже должна быть лужей. То есть d[i] = r[i-1] * (1 - d[i-1]); 

          r[i]*d[i] - вероятность того, что i-я клетка окажется лужей, и при этом он в неё "вляпается" (вероятность одновременного наступления независимых событий равна произведению вероятностей)

          Ответом будет сумма этих вероятностей по всем клеткам. 

          P.S. как-то я сам слабо верю в то, что написано, но это прошло все тесты.

    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      получается решение за О(N) жестко

      а какими изначально значениями надо заполнять конечные клетки ?
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Логично, что если персонаж стоит в предпоследней или пред-предпоследней клетке, то он за один шаг попадет в последнюю где лужи нет. Т.е. в них заведомо нули. (Уточню, что в моем решении в i-й клетке содержится среднее число луж, в которые персонаж попадёт далее по улице, но не учитывается возможность существования лужи в этой клетке. Эта вероятность учитывается уже при подсчете значений в предыдущих ячейках массива.)
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

А Петю можно поздравить с установлением очередного рекорда по рейтингу!
UPDATE: не заметил, что про это уже сказали, сорри.
13 лет назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится
853 место, пичалька :(
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Могут еще несколько читеров забанить.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +3 Проголосовать: не нравится
    Я в каком-то TCO занял место (проходной лимит)+10 и был последним, кто был допущен к следующему этапу. Так что все может быть.