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

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

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

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

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

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

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

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

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

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

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


15 лет назад, скрыть # |
 
Проголосовать: нравится +8 Проголосовать: не нравится
Расскажите кто нибудь вкратце как тыщу решать.
15 лет назад, скрыть # |
 
Проголосовать: нравится -21 Проголосовать: не нравится

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

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

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

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

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

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

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Факт - если в следующей части идет дождь, то мы идем в послеследующую, иначе - в следующую
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      У меня лиса в другую сторону смотрела.
      Если i-я часть чистая, то мы в нее идем всегда, а если грязная - идем только тогда, когда (i-1)-я тоже грязная (из (i-2)-й).
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Если на дорожке сухо, потом k раз грязно, а потом опять один раз сухо - k/2 раз придётся прыгнуть в грязь. Разобьем путь на несколько таких дорожек. Понятно, что случайная величина - кол-во прыжков в грязь - равна сумме случайных величин типа такой: "если в i сухо, потом до j грязь а в j опять сухо, то (j-i-1)/2, иначе 0". По каждой можно отдельно посчитать мат. ожидание, оно тривиально - (j-i-1)/2 * (вероятность появления такой дорожки).
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Вот да, я как раз на подобном решении и потерял 25 очков и прохождение во второй раунд. Но почему мы можем считать матожидания для таких дорожек независимо? Ведь сами события наличия дорожек - они зависимы.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится
    Я 50 минут над ней тупил... В последние 30 секунд заменил Math.min(c[i-2],c[i-1]) на просто c[i-2] в одной строчке... В последние 15 секунд протестил, в последние 5 отослал. К моему большому удивлению оказалось правильно.

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

    Буду наверное в понедельник на работе разбираться.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 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). В последнем случае персонаж попадает-таки в лужу, поэтому к среднему числу луж, в которые он попадет далее, надо добавить единицу. 

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

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

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


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

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

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

        P.p.s. Это бред.
        • 15 лет назад, скрыть # ^ |
          ← 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. как-то я сам слабо верю в то, что написано, но это прошло все тесты.

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

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

А Петю можно поздравить с установлением очередного рекорда по рейтингу!
UPDATE: не заметил, что про это уже сказали, сорри.
15 лет назад, скрыть # |
 
Проголосовать: нравится -6 Проголосовать: не нравится
853 место, пичалька :(