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

Доброго дня, Codeforces!

Сегодня, 19:00 начнется первый раунд Открытого чемпионата Москвы и МО по программированию (КРОК).

Это будет обыкновенный двухчасовой Codeforces раунд со взломами и падением баллов во время соревнования. В Раунд 1 допускаются все, кто прошел Квалификацию и зарегистрировался на соревнование. Также вне конкурса допускаются к участию все остальные зарегистрировавшиеся на раунд. Как обычно, раунд будет рейтинговым для всех. Для прохождения в Раунд 2, Вам нужно набрать не меньше баллов, чем участник на 300-ом месте (при условии положительного числа набранных баллов).

В раунде вас ждут несколько задач, примерно расположенных по возрастанию сложности. Разбалловка за задачи стандартная (500-1000-1500-2000-2500). Во время раунда задачи тестируются системой только на претестах, а системное тестирование состоится после окончания соревнования. Претесты не покрывают все возможные случаи входных данных, так что тщательно тестируйте свои программы!

До окончания раунда категорически запрещается публиковать где-либо условия задач/решения/какие-либо мысли и соображения о них. Запрещено общаться на тему задач, обсуждать условия и проч. Будьте честными и пусть в Раунд 2 пройдут сильнейшие. После того как раунд завершится, можно будет обсуждать задачи и решения.

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

В подготовке сегодняшнего раунда участвовали: Ripatti, havaliza, haas, RAD, Gerald, MikeMirzayanov, Delinur. Огромное всем им спасибо за проделанную работу!

Всем удачного Раунда!

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

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

Рейтинг будет пересчитан для каждого дивизиона в отдельности?

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

Сюда кажется забыли запилить пост.

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

Не отсылается решение, множественные сообщения с багом и женщиной. Пробелы вставлять не помогает.

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

Admin plz look in to it. I received a mail that I qualified for round 1 and I also registered for round 1 as usual but now I am trying to submit solutions but it gives me access denied what is the problem admin plz look into it asap.

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

Расскажите, как решать С, пожалуйста.

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

    Спираль размера k+2 — это квадратик минус спираль размера k минус еще одна клетка. Спиралей куб, каждую пересчитываем из спирали меньшего порядка за O(1). Перебрали все, сказали ответ.

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

    Заметим, что квадрат размера k лежит в середине квадрата k+4. далее понятно

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

    Пусть d[r][c] -- сумма в спирали размера k - 2, начинающейся в клетке (r, c); nd[r][c] -- то же самое для спирали размера k. sum(r, c, k) -- сумма в квадрате размера k; a -- исходный массив. Тогда nd[r][c] = sum(r, c, k) - a[r + 1][c] - d[r + 1][c + 1]. Так можно пересчитывать d от k - 2 к k и каждый раз проверять все ячейки. Сложность O(n·m·min(n, m)).

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

    хм, а я начинал с каждой клетки раскручивать спираль с центра... раскручивал не по клеточкам, а отрезками и когда на очередном витке получалась корректная спираль, то проверял с ответом... сложность O(N3), но отнимать спиральки круче, у меня более косячное решение...

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

На чем ломали A и B?

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

Умудрился прочитать в самом начале тура C D как "3 наместника, каждому по n/3 городов". Только за двадцать минут до конца решил всё-таки перечитать сэмпл, понял, что я дурак, и засабмитил на последней минуте.

Хороший контест.

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

Я люблю тебя, C++!!:D

ML — наш вердикт!

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

Мне не понятно, как будут пересчитывать рейтинг? Отделят дивизионы и пересчитают внутри своего дива?

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

The problems were quite tricky. I've hacked someone at every problem I've solved (A,B,C) :-)

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

Wooooo~~,how exciting for the first time!

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

Как D решалась?

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

    Чуть-чуть случаев. Разбили на две доли. Либо в обеих долях количество вершин делится на три (тогда очевидно), либо в одной остаток 1, в другой — два. Будем считать, что в первой — один.

    Теперь если в первой доле есть вершина, не соединённая хотя бы с двумя из второй, убиваем этот треугольник, дальше — очевидно. Иначе в ответе, если он есть, бывают только тройки из одной доли или тройки ("2 из первой", "1 из второй"). Очевидно, что вторых троек будет 2 по модулю три, иначе не сойдутся остатки. Также в ответе, если он есть, можно сделать так, чтобы вторых троек было ровно две. Отлично. Нашли все вершины из второй доли, несоединённые хотя бы с двумя из первой, взяли две любые, выкинули два треугольника, дальше — очевидно

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

      Только там есть ещё несколько случаев, когда граф несвязный.

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

        А в чём проблема несвязного графа?

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

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

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

            Всё равно непонятно. Я в своих рассуждениях нигде не пользуюсь ни связностью, ни тем, что разбиение на доли единственно. Когда доказываю отсутствие ответа — мне всё равно, из какого разбиения на доли он был получен.

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

              Я понял, у меня просто решение другое — я перебирал все варианты, включая количество и размер компонент связности и в каждом случае либо получил ответ, либо убедился, что его нет. Сорри.

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

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

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

            Упала, потому что в одном месте вместо <= написал <

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

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

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

    Раскидаем каким угодно образом наши города по берегам. Обозначим количество на городов на левом берегу a и на правом берегу b. Тогда если , то ответ очевиден (разбить на тройки на берегах). Если , то поменяем города берегами, тогда станет . Теперь попробуем найти на левом берегу город, у которого нет моста с двумя городами на правом берегу. Если такой имеется, то удалив эту "троицу" переходим к случаю когда . Вот, а теперь на чем всех ломались. Рассмотрим тест:

    6 4
    1 2
    3 2
    4 5
    6 5
    

    Т.е. для города на левом берегу не нашлось такого города, тогда в таком случаи должно найтись два город на правом берегу, которые не соединены с двумя городами не левом берегу и так чтобы все 4 города которые мы выбираем на левом берегу были различные. Но раз до этого мы не нашли слева города, который не соединен мостом с более чем один городом, значит он не соединен максимум с одним и для поиска двух наших городов справа можно использовать жадный алгоритм. И опять же после удаления двух "троиц" мы переходим к случаю .

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

I will comeback next time!

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

тот факт, что я опоздал на контест на 30 мин, не испортило мне впечатление от контеста. замечательный контест

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

Взлом вслепую... мне сегодня везет...

02:00:00 D Успешный взлом участника...

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

Is there going to be any wild card round like we saw in VK cup??

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

Были какие-то баги с отправкой. Из-за этого на минуту позже отправил A и C :(

Отправлял через выбор файла, при нажатии кнопки Отослать появлялась страничка с Access denied. Видимо, потому что страница долго была неактивной — со второго раза получалось нормально.

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

For problem B, if using DFS, what's the time and space complexity?

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

По-разному перегружать одну и ту же функцию для int и Integer — это жесть...

ArrayList a; int i; a.remove(i); // пытается удалить по индексу

Integer j; a.remove(j); // пытается удалить число j из массива

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

Is the result of the last query in the sample case of Problem E right?

n = 5, k = 1, r's and a's are given as (1 5 4 1 2) and (4 4 3 2 2), respectively, and the last query asks if the 1st and the 4th members can be together in a group. But their age difference is 2, which exceed k(= 1), so they cannot be in the same group.

My misunderstanding or what?

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

Интересные очень задачи, мне понравились, жаль только что я не смог найти баг в задачах А и Б, а через 5 минут после контеста нашел! Готов поспорить что такое бывает с каждым :)

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

Overly long explanations for Problems A, B and C

I liked this contest, wish I didn't fail so much in problem A so I could have tried D.

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

Как там писал Шмелев? Снимите с меня весь рейтинг за сегодняшний контест! Перепосылка по А из-за того что у меня ножницы режут камень, час тупости над В когда не мог правильно посчитать асимптотику решения и еще не сданная С из-за косяка в реализации. Фак мой мозг.

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

На вторую Дейкстра плохо заходит:(

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

Откройте дорешивание плиз)

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

I don't remember when I was so lucky as in this contest, watching the system test was too exciting... (I fell to place 300)

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

why there is no practice after the contest? and the problems are not available in problemset also.

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

Можно ли подобрать такие n и m, чтобы было a^n = b^m.

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

Why is Dijsktra for B too slow? 1000 * 1000 * lg(1000000) * 4 = 80 million, which should be doable in 2 seconds. Unless the server is very slow today ... :(

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

I see many people (including me) got WA on pretest 5 in problem C. I think the problem is setting the initial maximum value to 0. We should set it to a large negative value.

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

Написал правильное решение по A, лишь в строке

if (m*k<=n)

неправильно поставил знак :(

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

Неужели КРОК запретил CF юзать свои задачи в дорешке?

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

Может мне кто пояснит, в чём проблема этого решения по B? Не вижу причины TL. Заранее спасибо.

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

Thanks for the great contest . There was lots of div 2 participants in the contest so please prepare more problems for div 2 like the VK 2 contest .

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

Сегодня столкнулся с одной проблемой. При посылке задачи А, используя компилятор Microsoft Visual C++ 2005+, правильное решение получило неправильный ответ на первом претесте, так как выдавало ответ 0 2 вместо 3 2. В то же время на GNU C++ 4.6 решение прошло.

Сократив код (это не решение задачи А), который способствует AC, я получил вот такой код, который зависит от компилятора на первом же тесте (0 2 вместо 3 2). Кто-то может объяснить, почему?

UPD. Если добавить в функцию win, в начало строку printf("smth\n"); то программа начинает работать правильно даже в VC++.

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

I got about +10 hacks in A by using this case

2000000000
R
R

These hacks saved my score after failing A and B. I was so lucky. Nice contest, by the way! :)

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

Я ВЕРНУЛСЯ!

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

Не знаю как обстоит дело с другими задачами, а в E тесты были слабыми. У меня прошло решение 1484343 с тупым багом: не обрабатывается случай, когда у нескольких людей совпадает r. На тесте

4 1
2 2 1 1
2 1 1 3
1
3 4

оно выдаёт 3 вместо 4.

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

+0 rating change. This is the second time it happened to me!

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

Почему турист занял первое место? его же нет в таблице результатов.

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

Оххх, в 0.29 написал авторское решение по D, но в некоторых случаях забыл вывести "YES". Минут 35 искал ошибку, только после этого сдал B и C и только после этого сдал D в 1.45. КМП прямо-таки :)

Авторам спасибо за контест!

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

Can someonw tell me whats wrong in the submission(for Prob B)..Solution...

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

Можете объяснить реализацию задачи А. (разбор всмысле)

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

There's inconsistency in final standings and rank in member's profiles, take Petr for example, he finished 3rd, but on his profile page the graph shows Rank: 4

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

Ну пипец.. Пропустил и очень обидно :(

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

Since the editorial doesn't seem to be coming, could someone share the ideas of their solutions to D and E?