Блог пользователя ruzana.miniakhmetova

Автор ruzana.miniakhmetova14 месяцев назад, По-русски,

UPD: ABBYY Cup 2.0 завершился! Свежая информация!

UPD: Публикуем разбор :)

И снова привет!

Напоминаем, что сегодня в 16 часов состоится долгожданный сложный дивизион ABBYY Cup 2.0!

Задачи будут сложными для полного решения, рассчитанные на ребят из Див1 Codeforces. Для участия не забудьте зарегистрироваться на контест!

Правила не изменились: в течение 5 часов участники должны будут решить 6 задач (одна из них эвристическая). Тесты разбиты на три группы (легкая, средняя, сложная) стоимостью в 20, 30 и 50 баллов соответственно. Засчитывается только полное прохождение группы тестов. При равенстве баллов штрафное время учитывается по правилам ACM. Полное решение какой-либо группы тестов засчитывается за сданную ACM-задачу, и в соответствии с этим вы будете получать штрафное время. Контест будет рейтинговым для всех независимо от формы участия и рейтинга.

Всех участников мы ждем на Дне открытых дверей ABBYY, где расскажем о наших технологиях и вручим подарки. Лучшим поможем с организацией поездки, а также подарим ценные гаджеты.

Надеемся, решение задач принесет вам интеллектуальное удовольствие!

Удачи, и пусть победит сильнейший : )

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

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

are the problems ordered by the increasing complexity ???

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

Когда будут подробности об "эвристической" задаче?

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

За неудачные попытки дается штрафное время?

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

    Видимо, ровно так же, как и в ABBYY Cup 2.0 - Easy, то есть да, по 20 минут.

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

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

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

It will be good that for each contest there will be a small info table in the post which will answer all standard questions about the contest, like "for whom it will be rated", "problems are ordered by difficulty or not", "score distribution mechanism", etc, so that people wouldn't ask same questions again and again in comments. Sometimes that information is specified in the text in different places, so gathering them all into one table will make it more easier to see all needed info at once.

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

A little sad that I'm gonna miss the last COCI round for this event :(

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

    I hope you won't regret your decision to participate in ABBYY Cup :)

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

will it be rated for div 2 or not?

 
»
14 месяцев назад, # |
  Проголосовать: нравится -6 Проголосовать: не нравится

а почему на главной странице до контеста 5 часов, а на странице соревнований 30 минут?

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

    Регистрироваться можно в любое время т.к. нет разделения на комнаты.

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

    Вы путаете время до окончания регистрации и начала контеста.

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

will the registeration be opened in the contest time?

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

Who can stop Perlik?? He submitted D2, 25 times & D3, 54 times now and it is increased.

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

T_T..forget to register and become unoffical...

 
»
14 месяцев назад, # |
  Проголосовать: нравится -4 Проголосовать: не нравится

18 задач — аж глаза разбегаются...

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

Если не противоречит правилам, поясните пожалуйста, как во втором примере задачи A получается 40 ходов? Если противоречит, я подожду окончания соревнования.

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

    Все вопросы по задачам лучше задавать через интерфейс раздела "соревнования"

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

      Спасибо, что помогли разобраться с интерфейсом. Однако, во время соревнования я получил ответ, что то типа "без комментариев".

      Прочитал разбор, с таким решением всё понятно, но ведь в условии сказано, или как минимум я так понял, что нужно в каждом конкретном случае k фиксировать и уж потом складывать.

      Что я не правильно понял?

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

Эвристическая задача клевая.

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

Как решать B3? :(

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

    Строим граф компонент реберной двусвязности. Это дерево, строим на нем LCA. Тогда если две вершины в разных компонентах, то ответ — расстояние в этом дереве

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

    Например, можно строить конденсацию графа по рёберной двусвязности (рёбра в новом графе = мосты в старом), затем искать расстояния через LCA, так как конденсация — дерево.

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

      Но каак все так быстро это писали?

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

        С помощью e-maxx, вероятней всего.

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

        15-20 минут, не так мало что-бы такое написать.

      •  
        »
        »
        »
        »
        14 месяцев назад, # ^ |
          Проголосовать: нравится -5 Проголосовать: не нравится

        Парочка дфсов, что туда еще прилепишь?:)

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

        Я так и сделал. 23 минуты

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

          С красными-то понятно) Но я видел пару фиолетовых, сдавших очень быстро, и долго-долго пытался придумать простое решение.

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

            Ну это, по-моему, довольно простое решение

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

        Там, несмотря на всю громоздкость, пишется всё практически не думая.

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

          Если пишешь LCA впервые в жизни, приходится подумать)

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

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

  •  
    »
    »
    14 месяцев назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится
    1. Удалим все мосты из графа
    2. Оставшиеся компоненты связности сожмём в 1 вершину
    3. Добавим мосты обратно
    4. Получилось дерево
    5. Ответ — расстояние между соответствующими вершинами в дереве
    6. Найдём наименьшего общего предка 2 — х вершин (a и b) из запроса
    7. Предпросчитаем глубины вершин в дереве
    8. Ответ = depth[a] + depth[b] — 2 * depth[lca(a,b)].
 
»
14 месяцев назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Понравились все задачи, кроме Д! Что туда нужно было пихать, что-бы зашел перебор?

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

    Я делал так: Сгенерил все "хорошие" маски — те наборы чисел, к которым можно что-нибудь добавить, чтобы собралось n с правильной суммой. Ну а потом просто перебирал, какое число очередным поставить, отсекаясь, если в какой-то строке, столбце или по диагонали маска получается "нехорошая". Получил TL. Добавил random_shuffle. Прошло :-)

    •  
      »
      »
      »
      14 месяцев назад, # ^ |
        Проголосовать: нравится -1 Проголосовать: не нравится

      у меня шаффл на D3 доходил до 33-го теста максимум. Это за 8 попыток.

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

    Перебор с доказанной асимптотикой.

    У меня так: будем заполнять квадрат в таком порядке (элементы со * не надо перебирать, они определяются однозначно:

    1 2 3 4*

    5 8 9 10*

    6 11 13 14*

    7* 12* 15* 16*

    Трудоемкость не больше 16*15*14*12*11*9*8*6*4. Наверно еще много само отсекается, когда нечего поставить.

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

      Кажется так будет даже лучше:

      1 2 3 4*

      5 6 7 8*

      12* 9 10 13*

      11* 14* 15* 16*

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

        Точно.

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

        1##2
        x34x
        x5xx
        x##x

        где x — то, что ставим, цифры — что однозначно определяется, # — то что остается

        переберем одну оставшеюся пустую, остальные однозначно восстановятся.

        будет ли лучше такое?

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

А сколько народу проходит дальше?

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

Блин одной секунды не хватило что сдать F3. Послал в дорешивание прошло

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

Что-то не могу понять почему в задаче F не канает отсортировать строки, посчитать Lcp для соседних просто влоб, а потом имеет смысл перебирать только k смежных строк? Ведь тот же принцип что и в суффиксном массиве — наибольшей общий префикс двух строк будет равняться минимуму Lcp соседних строк в отсортированном массиве, которые лежат между нашими двумя.

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

    5 4

    aaaaaaaaaaaaaaaa

    aaaaaaaaaaaaaaaa

    b

    cccccccccccccccc

    cccccccccccccccc

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

      Тьфу блин, каким местом думал... Спасибо)

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

    Потому что например может быть такой тест a (100 раз) b (1 раз) c (100 раз). k=200. Очевидно, что надо взять 100 строк "a" и 100 строк "c"

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

    Смежных?

    5 4 aab aac bbb cca ccb

    В F1 и F2 прошёл бор с динамикой, F3 хз как делать.

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

Very enjoyable competition, I do not regret missing out on COCI for this :D

I particularly enjoyed solving task E (E1 and E2 at that, I had no idea how to cope with the "noise" — but still, it was a very interesting task) :)

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

    rng_58's 1637186 is very easy to read :)

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

    We can apply a (say 5 x 5) "median filter" which can handle this kind of salt and pepper noise. Provided that the shapes are far enough from each other, there is only a small chance that some of them merge after filtering the image.

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

Как решать задачу C3? У меня никак не пропихивался nlogn.

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

    Я запихнул n * sqrt(n) :)

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

    У меня N*Log^2 прошел :)

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

      Ну вы аццкие пихальщики, у меня NLogN с горем пополам за 980 мс.

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

      Расскажите, как пихать NLog^2, как пихать n * sqrt(n), и кто придумал самое простое решение. А то у меня ужас в миллион строк.

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

        Просто, разобьем все на циклы, для каждого заведем дерево фенвика, а потом бинпоиском будем искать левее элемента свободное вхождение, а потом, если не нашли, правее.

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

        У меня сравнительно короткое решение.

        Я держал для каждой группы независимых позиций в таблице (т.е. для групп вида 0+m*i, 1+m*i,...,gcd(h,m)-1+m*i) раздвоенный сет пустых мест (т.е., если свободно p, то свободно и p+size, и наоборот). Далее просто upper_bound для нахождения первого подходящего места. Ну и немного шаманства с map и прекальком индексов. 1640742

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

        Если бы стлевский сет умел возвращать номер элемента в множестве то решение было бы в один цикл. Поскольку оно это не умеет то можно: 1) декартово дерево — тут все понятно как; 2) сделать как написано выше с фенвиком и бинпоиском; 3) сделать обычное дерево отрезков для суммы с хитрой операцией lower_bound которая каждый раз смотрит в левое поддерево берет там сумму начиная с элемента pos если не ноль идет в него иначе идет в правое. асимптотика n * log^2 n

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

          эээ... зачем это все?

          задача очень просто решается стандартным сетом в пару строчек

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

            Воот, это-то я и искал, спасибо)

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

            А как ты узнавал количество элементов которые ты перепрыгнул?

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

              Там можно в сет хранить индексы свободных мест и при помощи lower_bound доставать ближайшее свободное. Вполне себе N log N. =)

              UPD: Забыл сказать, что вначале все циклы надо перенумеровать внутри, чтобы стал порядок от 0, до h / gcd — 1.

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

                Да я что-то не подумал перенумеровать. Так намного проще

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

                Вот здесь напоролся на то, что lower_bound(myset.begin(),myset.end(),x) — совсем не то же самое, что myset.lower_bound(x).

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

                  я правильно понимаю, что это даже не скопилируется, потому что в сете итераторы не произвольного доступа?

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

                  В том-то и проблема, что скомпилируется, но работать будет не за O(logN), а за O(N).

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

                  Скомпилируется. И даже будет работать :)

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

                  Функции из algorithm на разные виды итераторов перегружены.

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

              все перенумеровал, тогда искомое — это разность в индексах куда хотели встать и куда встали в итоге

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

    Мой NlogN работает 580 мск.

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

    Тысяча чертей. У меня nlog^2(n) доходил до 40 теста, а nlogn до 31го или 36го.

  •  
    »
    »
    13 месяцев назад, # ^ |
      Проголосовать: нравится -10 Проголосовать: не нравится

    В данной задаче имеет значение, как осуществляется ввод: через scanf() или через std::cin. С использованием std::cin ловил TL, а через scanf прошло. При "200000 M 200000" разница выполнения на одном из тестов достигала 500 мс (1684547 и 1684581). Никогда на практике не использую scanf из-за его проблемности, но здесь такой случай, когда без него трудно справиться))

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

Конкурс на самый идиотский порядок сдачи. Подаю свою кандидатуру с:

А1-А2-А3-D1-B1-B2-E1-C1-F1-B3-E2-C2-C3...

Да, спасибо авторам, задачи, конечно, хорошие... Но слово Hard обломало мне весь контест.

Думал, что будут реально трудные задачи, и тактика "codejam" сработает. В результате, потратил кучу времени на написание лишних решений, да и в тех, которые "не лишние", немного намудрил.

И место черт знает где:)

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

I enjoyed the competition very much. I think we should have more of these 5 hour contests in which the solutions are judged during the contest time (i.e. ACM style rules).

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

The Magic Square is so interesting。I solve it for a long time。

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

"Тесты разбиты на три группы (легкая, средняя, сложная) стоимостью в 20, 30 и 50 баллов соответственно." А в тексте задач, другое количество баллов. Почему, это просто что-то правилось и забыли везде поправить, или для разных участников ...?

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

    Получение 20 баллов — прохождение набора стоимость 20 баллов.

    Получение 50 баллов — прохождение набора стоимость 20 баллов и набора стоимостью 30 баллов.

    Получение 100 баллов — прохождение первых двух наборов, а так же набора стоимостью 50 баллов.

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

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

      Спасибо за столь быстрый ответ. Опять ДП :)

 
»
11 месяцев назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

а когда будет пост про финал ABBYY Cup?

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

    Ситуацию усугубляет то, что "ABBYY Cup 2.0 завершился!"

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

Извиняюсь, что поднял пост. Но есть существенные проблемы при написании виртуального контеста. Мои посылки не отображаются. Мой ник в таблице не отображается. Нет выпадающего списка с задачами во вкладке отправить.