Блог пользователя ivan.popelyshev

Автор ivan.popelyshev, 14 лет назад, По-русски

Копись вкладик.

Соревнование начнётся в 9 февраля в 20:00 по саратовскому.

Да пребудет с нами Сила!

UPD. Артём крут!

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

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

По Питерскому! =)

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

По Рыбинскому! =)

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

А в D1 450 правильна ли такая динамика: dp[prefix][edgesleft][mask], где mask маска четности последних K?

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

    Да. Нужно только учитывать кратные ребра.

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

    у меня были долгие переходы (за m * 2k), поэтому не зашло.

    UPD а как быстрее делать переходы?

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

    Я не смог довести ее до ума. Проблема вот в чем (уточню сразу — я делал динамику вперед, хотя это не должно быть важно). Мы можем прийти в одно состояние несколькими способами. К примеру, в d[3][0][011] можно прийти из d[2][1][101] и из d[2][1][110]. Переход посчитается дважды, хотя картинка одна.

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

      Надо просто упорядочить переходы, добавив состояние, в какую мы сейчас хотим добавить ребро.

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

        Что это значит? Разве в динамике мы не добавляем варианты через прикрепления к последней вершине нового ребра?

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

        Все равно не понимаю. Я добавил еще одно состояние — минимальный левый конец ребра, которое мы можем поставить. Таким образом, по модулю кратных ребер получается всего два перехода — мы либо ставим ребро, либо не ставим. Заработало секунд за 20 до конца, успел даже засабмитить. Но это четырехмерная динамика, а все вроде бы трехмерную писали.

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

forest, RAD, признавайтесь, на чем поломали?

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

Во второй задаче див2 троих сломал на тесте 8.9, у самого тоже не проходит этот тест, но потому что скопипастил строчку из соседнего цикла и не сменил индекс, обидно, но будет наука впредь:(

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

Блин я сейчас заплачу. Быстро сдал 300 и 450. Был 30м придумал 1000ю не дописал. Сделал первый в жизни челендж, а за ним и второй. Был видимо в топ25 и упала medium из-за одного символа (8->9)

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

Какой верный ответ на 111,1.1 ? Почему не 5? Или там эта ерунда получается не круглая?

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

Засабмитил 1000 в последнюю минуту, на макстесте работала 1990мс :)

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

    рубаха парень ^^

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

    А как решать? У меня динамика за O(n3m2k) работает три секунды. Идея: выразим ответ через ответы для меньших таких же задач, перебрав количество уток первого типа.

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

      Я умею решать за n^2 на количество упорядоченных разбиений m. Это не очень много, только там какие-то веселые коэффициенты из факториалов и цешек лезут. не дописал.

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

      У меня O(n2 * m2 * k) Состояние динамики — n,m,k, и сколько утят типа k обязано присутствовать в каждой строке — пусть это A. Переход — перебираем минимальное кол-во утят в каждой строке и количество строк, в которых их именно столько. Ещё хитрость в том что сначала в d[n,m,k,A] хранится кол-во вариантов если A-это то самое минимальное количество, а потом суммированием точный параметр превращается в ограничение снизу.

      И еще по параметру k я сжимал динамику по памяти, так как значения для k пересчитываются из k - 1

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

        Если не ошибаюсь, то можно решить за O(n * m^2 * k + n^2) за 2 функии динамики.

        Первая функция f(n) — ответ. Определим количество вариантов первой строки при условии следующий различных между собой, вычтем возможность идентичности первой строки с какой-либо другой, используем формулу включений-исключений

        f(n) = f(n — 1) * a(1) — 1! * f(n — 2) * C(n — 1, 1) * a(2) + 2! * f(n — 3) * C(n — 2, 2) * a(3) — ...

        где a(i) = g(i, m, 0)

        Вторая функция g(n, m, k) — количество способов сделать n идентичных строк длины m, начиная с k-го номера

        g(n, m, k) = C(m, 0)^n * g(n, m, k + 1) + C(m, 1)^n * g(n, m — 1, k + 1) + ...

        Сам не проверял, но вроде все правильно. Только под конец раунда придумал

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

Что-то изи как-то активно попадала.

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

SysTest... Up... Up... Up =)

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

Поздравляю RAD с победой в СРМе!

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

а есть ли возможность посмотреть результаты только по одной стране?

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

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

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

Кто-нибудь может помочь с идеей в div 2 950? Знаю, что в div 1 такой задачи не было, но в дивизионе решило только 2 человека, и хотелось бы услышать разные идеи :)

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

    Динамика по профилю.

    Аналогично задаче симпатичных узорах.

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

    А на ТС зайдет 2^17*100*8 в 2 секунды? Если да, тогда решение ДП по изломаному профилю, dp[i][j][mask] — где і,j = номер строчки и столбца, а mask — битмаска где хранится чётность клеточёк.

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

      А можно подробнее, почему 2^17 и что вообще в этом случае представляет из себя маска?

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

        у меня было 2^16 * 100 * 8, смотри дп d[rowsCnt][col][mask][cntmask]. rowscnt до 100, от этого параметра можно избавиться просто заменяя массивы, ибо нам нужно только две последовательные "строки" этого массива (d_old[col][mask][cntmask], d_new[col][mask][cntmask]). Каждый слой представляет собой ломаную штуковину типа
        000XXXX
        XXX0000
        в данном случае излом в col = 3, (если от 0 считать). в случае col = 0, у нас первая строка из крестиков, а вторая из ноликов. Крестики представляют собой то, чему соответсвуют биты масок. Первая маска говорит о том, что в данной позиции что-то есть (если соответсвующий бит равен 1) или пусто. Вторая маска говорит для каждого крестика чётность стоящих рядом непустых клеток, из тех, для которых мы уже определили значение. Давай рассмотрим что происходит на примере приведённого выше профиля. Я переобозначу клетки так
        000AXXX
        XXBC000
        сейчас, мы должны назначить значение клетке C, для этого переберём возможные варианты (пусто, занято). Заметим, что если в клетке A не пусто, то мы можем поставить значение единственным образом, т.к. клетка С это последний сосед клетки A. После того как мы поставили сюда что-то (или не поставили) мы переходим к профилю
        0000XXX
        XXXX000
        и нужно обновить или совсем заменить значения некоторых битов в обоих масках. т.к. он соответсвует уже другой клетке. например сейчас это произошло с битом номер 3(если с нуля считать) соответсвовало клетке A, а теперь стал соответствовать клетке B. полное решение смотри в практис румах юзера Alias_Prudaev

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

      У меня зашло N × M × K × 22K = 1000 × 8 × 216. За 1.7 секунды, правда, но зашло:). Так что это и вовсе должно заходить.

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

So, I hope you enjoyed the problems :)

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

Вот что я реально не понимаю, так это в чём у меня ботва в 1000... http://community.topcoder.com/stat?c=problem_solution&rm=311450&rd=14725&pm=11766&cr=22452815

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

а по Topcoder'y есть какой нибудь поиск по тегам? Порешать задачи на такие-то и такие-то темы?

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

Зашёл на топкодер, удивился: почему-то 532-й раунд исчез из рейтингов. На арене так же. Не локальный глюк, вроде. Кто-нибудь наблюдает то же самое?