Блог пользователя goo.gl_SsAhv

Автор goo.gl_SsAhv, 13 лет назад, По-русски

Что-то мне не пришло письмо о том, что скоро будет СРМ, уже через 5.5 часов он состоится в 6:00 по московскому времени. Тут можно уточнить время начала в других часовых поясах.

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

по информации snarknews.info

Анонс: 24.12.2011 (сб), 06:00 на сайте www.topcoder.com состоится Single Round Match 526.5, назначенный в качестве "компенсационного" из-за проблем с регистрацией перед началом SRM 526.

UPD: Я ошибся на 24 часа,  матч будет только через сутки. Прошу прощения, заработался.

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

»
13 лет назад, # |
  Проголосовать: нравится +33 Проголосовать: не нравится
Да ты ж гонишь.
»
13 лет назад, # |
  Проголосовать: нравится +26 Проголосовать: не нравится
А вот теперь - самое время :)
»
13 лет назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится
Начал решать мой 1 SRM. Прочитал 1 задачу, написал код. Компилирую выводит

Your code did not compile:
errors compiling:

Your class or method was improperly declared: In function ‘std::string _wrapper::thunk(int)’:
Your class or method was improperly declared:20003: error: invalid use of undefined type ‘struct MagicStonesStore’
end of your submission:10030: error: forward declaration of ‘struct MagicStonesStore’

помогите в чем ошибка.
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Даешь змейку на графике!!
»
13 лет назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится
-3 на челленджах :(...а до них был на достаточно неплохом месте :(
»
13 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится
Интересно как решалась 500ка... Вроде некоторые достаточно адекватные идеи есть, а потом начинаешь прикидывать чего и как получается, что фигня какая-то =/.
  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    x^2=x+(кол-во упорядоченных пар из x элементов) => ответ - суммарное число снежков + сумма вероятностей по всем упорядоченным парам снежков того, что они упадут в одну точку. Вроде, как это считать очевидно.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Да крутая мысль разбить x^2 на две части. Жалко сам не придумал(( Хорошо хоть есть ещё один срм 28го можно будет отыграть слив.
  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +17 Проголосовать: не нравится

    Чуть более сложное решение, зато более в лоб. (Еще бы не тупить пока пишешь).


    Матожидание линейно, значит разбились на клетки.
    E[x2] = D[x] + (E[x])2. Значит надо посчитать для клетки матожидание и дисперсию. Матожидание линейно, поэтому
    События независимы, поэтому дисперсия тоже линейна.
    Ну а дальше надо очевидным способм просуммировать по клеткам. Как можно было это не сдать?

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

      Я вообще придумал какое-то шаманство с FFT. Сначала написал практически твое решение, потом понял, что не знаю, как считать E[x2], зная E[x], и стал делать еще более в лоб, но уже не успел написать (запутался в коэффициентах, и даже с тупым перемножением она не работала).


      Для каждого сектора для каждого количества снежков посчитаем вероятность. Нужно научиться сливать два вектора с вероятностями (если мы для всех i знаем, с какой вероятностью i снежков даст первый блок и с какой вероятностью второй, то вероятность получить i снежков в сумме можно посчитать, перемножив эти два вектора).
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я эти суммы пересчитывал с помозью частичных сумм. У меня в решении требовалось посчитать величину вида p^r * A[i] + p^(r-1) * np * A[i + 1] + ... + np^r * A[i + r]. Я превратил эту штуку в сумму геометрической прогрессии, написал частичные суммы, а потом запарился с тем, что выносил ноль за скобку и получал деление на ноль :-(
  • »
    »
    13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

    Еще более сложное решение, чем оба описанных выше. Рассмотрим какую-то клеточку, а также все квадраты, которые ее содержат. Для каждого такого квадрата (пусть его площадь S) рассмотрим случайную величину, которая принимает значение 1 с вероятностью 1 / S (снег падает на нашу клеточку) и 0 с вероятностью 1 - 1 / S (снег не падает на нашу клеточку). 


    Итак, для каждого квадрата есть amounti снежков, каждому из которых соответствует случайная величина описанного выше вида. Нам требуется найти матожидание квадрата суммы этих случайных величин. Найдем производящие функции каждой из этих случайных величин. Это функции вида f(x) = (1 - 1 / S + x / S).  Так как производящая функция суммы независимых случайных величин --- это произведение производящих функций соотв. сл. величин, то для искомой суммы это есть функция вида f(x) = (1 - 1 / S1 + x / S1)amount1·...·(1 - 1 / Sk + x / Sk)amountk.

    Теперь используем тот факт, что вторая производная пр. функции сл. величины X в точке 1 --- это E[X(X - 1)] = E[X2] - E[X]. Первая производная --- это E[X]. Получаем, что E[X2] = f''(1) + f'(1). Первые 2 производные от функции описанного выше вида ищутся очень просто за O(k2). Осталось только просуммировать найденные матожидания по всем клеткам. Разумеется, нужно брать по одной клетке из каждого квадратика, которая не попала во внутренние квадратики, а затем просто умножать на количество таких клеток.

    На контесте решил что производящая функция будет более сложного вида и не закодил :(
»
13 лет назад, # |
  Проголосовать: нравится +7 Проголосовать: не нравится
А есть ли на ТС плагин, который позволяет разбить текст задачи и окно для кодинга на два таба? Чтобы можно было использовать весь экран под нужное окно.
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    > А есть ли на ТС плагин, ... Чтобы можно было использовать весь экран под нужное окно.
    Любой, который сохраняет в файл
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Сдавал A на последней минуте. Уже даже не проверял на всех сэмплах. Сразу выяснилось, что не работает на единственном случае н = 1, но время уже вышло. По ней был взлом. Придя домой, выяснилось, что по этой задаче у меня 90 и нет надписи "Passed system test". Что это значит?
И еще: чем отличается желтая надпись "Passed system test" от, скажем, синей или зеленой?
»
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
как решается 1000? разбор у автора не очень понятен
  • »
    »
    13 лет назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    что конкретно не ясно? зная t мы можем решать жадно, как задачу MoreNim отсюдова srm396.

    всего интересующих нас значений t порядка n^2, переберём их все, и выберем оптимальное решение.

    • »
      »
      »
      13 лет назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится
      про жадность понятно
      почему-то не подумал, что t можно перебрать
      • »
        »
        »
        »
        13 лет назад, # ^ |
          Проголосовать: нравится +2 Проголосовать: не нравится
        там в разборе пояснено почему значений n^2 и как получить такие значения, которых будет достаточно для перебора.