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

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

Сегодня, в четверг, 13 октября 2011 года в 15:02 по Москве состоится 521-й TopCoder Single Round Match (время в других городах).

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

13 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится
250 (Div 1) какая-то уж сильно халявная.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +1 Проголосовать: не нравится
    Она дико халявная, особенно по сравнению с Div1 500.
    Несбалансированный SRM получился.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +9 Проголосовать: не нравится
      Некоторые там динамику по подотрезкам писали :)
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Я писал. Первая мысль была: черт, если это 250, значит она решается втупую... Пофигу, пусть умные люди пишут простые решения, я же буду писать че умею)
13 лет назад, # |
Rev. 2   Проголосовать: нравится +1 Проголосовать: не нравится

Странно, что мало посдавали 1000.

У меня она тоже, вообще-то упадет, но фиксится вроде одной строчкой.



UPD: гы, прибежела толпа народа, все смотрят, что ж я там такое написал)))
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    А там есть какое-то очень простое решение? Кстати может кто-то объяснить откуда берутся матрицы размера меньше 256?
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Считаем, что следующий ход - открывает новый ряд.

      Тогда видов состояний всего 4 - 2 последних слоя полный, предпоследний полный, в последнем 2 рядом или 3, или в предпоследнем 3, на них - 2
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Мы же можем иметь три незаконченных ряда одновременно. Я не понимаю как это обработается.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          давай отмечать не все моменты времени, а как бы когда мы остановились и собрались открывать новый слой. если у нас три ряда не полных, то новый слой мы открыть не можем=> это не рассматривается. точно также, если сверху 2 не рядом.
          • 13 лет назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится
            Похоже на правду... Я чуть по другому делал - отсекал по моментам когда полностью заполняется слой. В результате получается перемножение матриц 256*256, но в них очень много нулей - поэтому говорим что много что не достижимо и даже не надо это считать. На макстесте в тл укладывается. на 259 - 1 тоже.
            • 13 лет назад, # ^ |
                Проголосовать: нравится 0 Проголосовать: не нравится
              Действительно, правда. В практис зашло. Видимо опять придется возвращаться к #define int long long
              • 13 лет назад, # ^ |
                  Проголосовать: нравится 0 Проголосовать: не нравится
                За такое хочется сильно побить человека, после челенджа по переполнению.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      Пишется тупое решение, узнаются первые 5 ответов, угадывается последовательность => матрица 2х2 :)
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Совсем простое решение - у нас не больше 3 нетривиальных слоев в любой момент (тех, где не все включены или не все выключены). Можно посчитать, что всего 35 валидных "шапок" (битовых масок поставленных кирпичей в этих 3 слоях). Тогда достаточно составить матрицу перехода и возвести ее в степень 4n - вот мое решение
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Откуда берется 4*n??? У меня из такого же соображения получилось n. Правда для матрицы непонятно какого размера.
        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Ну, 4 кирпича на каждом уровне. А матрица перехода - добавление одного кирпича
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Действительно 1000 оказалась не особо сложной, примерно в 2 раза больше прошедших решений на 1000 чем на 500..
    Правильный ход был сразу начинать с 1000, жаль что мне такое не свойственно)
13 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится
мне кажется, это конечно мое личное мнение, но на мой взгляд, это наикоченейш_й раунд
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Мне вообще повезло, я зачелленджил чела по 500-ке, который возвращал рандом. :)
  • 13 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +3 Проголосовать: не нравится

    И откуда такие берутся? У меня в комнате по харду человек возвращал n mod 100...7

13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Товарищи, дайте идею 500 div1.
В 1000 напрашивается динамика, но довольно хитрая, точно не уверен.
  • 13 лет назад, # ^ |
      Проголосовать: нравится +20 Проголосовать: не нравится
    Идея такая: для начала поймём, что для каждого хорошего множества существует квадрат какого-нибудь хорошего вида. Например, n для него равно либо nlow/nhigh, либо какой-нибудь разнице координат.
    После чего перебираем сторону квадрата. Поймём, что если квадрат для множества есть, то его можно сдвинуть вправо/вниз до тех пор, пока либо у него на верней и левой стороне не окажется по точке, либо он упрётся правой/нижней стороной в какую-нибудь точку, не включая её.
    Теперь у нас мало возможных квадратов, проверяем все и складываем ответы (в виде битмасок) в set.
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Правда ведь, что если добавить для каждой точки восемь соседних, то перебирать нужно только квадраты, которые построены одним из четырех способов по любым двум точкам, включая фиктивные? Ну и длины - это все возможные попарные расстояния + nlow + nhigh.
      • 13 лет назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится
        Хватит даже трёх соседних - слева-сверху.
        И, да, в любом случае надо помнить, что надо пытаться вписать каждый из углов квадрата, а не только один.


        • 13 лет назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится
          Я вписывал четырьмя способами для девяти точек, но все равно получил WA на последнем претесте. Значит, все же в реализации хрень.
    • 13 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится
      А, и чтобы работало побыстрее при фиксированном иксе можно пробежаться двумя указателями по отсортированному по y массиву точек - тогда будет для икса не O(n*sz(ys)), а O(n + sz(ys)) - оптимайз.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    У меня решение за O(x.length5). Расписывать его не готов, вот оно
    • 13 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      Такое же как моё. Спасибо, поверил в себя, увидел дурацкую багу,вместо MAX_INT/3 ставил 10^8 + 1, в него упирался квадратик :)
13 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
Объясните условие Div1-500 :) 
Почему {(0,0)} это 5-squared, но не 10-squared?
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Потому что в любом квадрате размера 10 лежит хотя бы одна другая точка.
  • 13 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    Потому что, какой бы квадрат со стороной 10 не взять, еще хотя бы 1 точка туда попадет
13 лет назад, # |
  Проголосовать: нравится -11 Проголосовать: не нравится
Наконец-то я желтый на TC :)
13 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Довольно быстро написал решение 500, до конца тура тормозил, не мог додумался до случая с квадратом в нецелых точках.

Опять таргет.

UPD. Нет, в практисе 500 всё равно падает :(