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

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

Доброго времени суток, друзья)

Приглашаем вас на очередной раунд Codeforces #175 для участников Div. 2. Как обычно, участники Div. 1 могут поучаствовать в этом соревновании вне конкурса.

Задачи для вас вновь готовила группа авторов в следующем составе: Павел Холкин (HolkinPV), Артем Рахов (RAD), Фефер Иван (Fefer_Ivan) и Геральд Агапов (Gerald). Как всегда благодарим Михаила Мирзаянова (MikeMirzayanov) за системы Codeforces и Polygon, а также Марию Белову (Delinur), которая перевела условия задач.

Распределением баллов публикуем заранее) cегодня оно будет стандартным: 500, 1000, 1500, 2000, 2500.

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

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

UPD1: соревнование завершилось, надеемся оно вам понравилось)

UPD2: разбор задач уже можно найти здесь)

UPD3: поздравляем победителей:

1) hechuan
2) TroyI118
3) BekzhanKassenov
4) ahmed_aly
5) lxgsbqylbk

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

»
12 лет назад, # |
Rev. 2   Проголосовать: нравится +20 Проголосовать: не нравится
while(standings[0]!={insert your username here})
{
	next_permutation(standings.begin(),standings.end());
}
»
12 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Today is the first day of the new solar year! Happy new year to Iranians!

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

Today is the first day of the new solar year! Happy new year to Iranians!

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

    If you tell your congratulations twice — you will get twice more "+")))

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

    dadash njuri k nemishe ! Man be hame ye Iranian saale no ro tabrik migam va aarezuye saali khosh ba rating haye bala baraye hame daram ;) injuri baiad begi payam haye vatanio ina nafahman, hamegi her her beshun bekhandim :P

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

I think, it will be a very interesting round!!! Everyone, successful hackings and have fum ;)

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

I think, it will be a interesting round!!! So... Happy Hackings & Have Fun...

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

Happy new year to Iranians and have a nice time

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

nice info, i will prepare next permutation code which i found some time ago in java :P

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

    You may take a look at the first comment here which have a next permutation code in C++ :P

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

If this round like round 171 doesn't have editorial please tell me to solve all the problems ;)

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

I have just relised that HolkinPV always make Div.2 Contest, Why don't he try to make some Div.1 contest?

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

    Actually I prepare two div1 rounds long time ago) and also not only by my self. Now I take part in the group of authors and we prepare div2 rounds for participants. Maybe we prepare div1 contest) wait) and enjoy our problems)

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

Hope to be an interesting round... Good luck for solving the problems and good luck at hacking ;)

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

Farmer john was lucky for me, and I want that this contest will be lucky for me :D

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

Regarding next round, 176, why is it so early on Saturday? Can you move it on Sunday at normal time 7:30 pm as before please?

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

..::Happy New Year::.. عید بچه های گل ایرانی مبارک more about Nowrouz: http://en.wikipedia.org/wiki/Norouz

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

3003 registered....

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

Зарегистрировалось 3003 человек!
3003 -- палидром!

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

Является-ли последовательность {1, 2, 3} перестановкой (имеется в виду, для системы тестирования).

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

    да
    это первая перестановка из трёх элементов

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

    Пожалуйста, задавайте вопросы членам жюри через соответсвующий интерфейс в системе. Кнопка "Задать вопрос" находится внизу страницы "Задачи"

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

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

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

    Последние div-2 only Контесты стали в духе 2-3 халявки один гугл и гроб.

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

    Я именно так ее и решал)) А что значит это: "Also the number of "good" permutations on 2n+1 elements"?

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

    Ну, заняться вам нечем. Можно переборчик написать с парой отсечений и precalc для 15.

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

      Да я знаю. Просто переборчик, как видно, можно было писать и без отсечений)

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

        Это за какую такую асимптотику переборчик?)

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

          Переборчик вроде как не работает. Во всяком случае я один такой на контесте сломал.

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

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

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

          Ниже написали уже: http://mirror.codeforces.com/blog/entry/7087#comment-127073

          Мне кажется, что и первого отсечения хватит. Оно довольно очевидно. И там ответ порядка 30 миллионов.

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

    Только хотел узнать, откуда у всех этот чудо-массив, вуаля. Нечестно однако...

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

      Ну почему же нечестно? Правилами не воспрещается, да и не явно ответы искать же надо) А так-то была задача, где в разборе написано что-то вроде: "Поймите, что это числа Марсенна и нагуглите их".

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

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

        1, 3, 15, 133. Теперь думай, что дальше? Весь контест не мог найти полную последовательность.

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

Nice contest, but I don't usually like problems where user machine does matter upon the solution.

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

    What do you mean?

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

      It's not that hard to come up with a brute-force solution on problem D which wouldn't run in time on the real competition, unless you've a nice machine so you can pre-calculate all the results in your own micro and just print it.

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

        I've tried to think about one brute force but all of them needs more than 2 hours.

        Edit: seems many contestants got brute force that runs in a less than 2 hours

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

          At least you have to use a not-so-naive brute force to solve it. My solution can run up to N = 14 and it takes 10s for N = 15.

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

            My brute force solution took about 10min for N = 15. That's why I'm willing to buy a Core2Quad Processor, I'd have done this problem a lot faster.

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

Как решать E? Я в недоумении!)

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

Уровень задач, на мой взгляд, был A-A-A-D-E :)

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

как решать Д? час думал, не догадался

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

    Нужно было предпосчитать / нагуглить (ненужное зачеркнуть) ответ :)

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

    Пишем n! ^ 2 перебор, ответы до 7 можно найти. Дальше если вывести получившиеся перестановки (часть конечно) можно заметить что они все делятся на группы с некоторой размерностью. Делим ответ на n! и получаем последовательность чисел, вбиваем в OEIS, немного копи-паста -- AC.

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

    У меня два отсечения: 1) Можно сказать, что первая перестановка — 1,2, ... , n. ответ умножить на n! 2) Можно сказать, что первый элемент второй — 1. ответ умножить n. Работает для 15, 16 где-то полминуты (даже если забыть про то, что ответ[2*n] = 0).

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

      Что-то я второе отсечение не совсем себе представляю. Можете поподробнее расписать?

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

        Ну смотрите, если прибавить один (по модулю) ко всем элементам второй перестановки, у суммы тоже прибавится единичка ко всем элементам. Значит, все вторые перестановки делятся на группы по n.

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

      Умно однако с первым отсечением придумано, респект.

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

      А вот для 17 уже 2 минуты. Это значит, что без второго отсечения — 2 * 17 минут, а без первого можно просто умереть. Наличие гугла все испортило. Задачка хорошая.) А жаль.

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

        Плохо считаю, 7 минут. То есть, поднять ограничения на 2, и без второго никак.

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

someone explain the solution of problem E please ;)

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

Кому написать по поводу: при обновлении страницы взлом продублировался. То есть вместо одной попыки стало две. Нажимал на кнопку взломать — ничего не происходило, потом появилось две посылки.

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

Математика, математика, математика... Контест — скучнее некуда. Три абсолютно идиотские и легкие задачи. Задача C, которая решается даже синими за две минуты, Задача D — на знание OEISа и мертвый математический гроб — задача E.

Обидно за задачу D. Зачем в ней этот идиотский модуль? И без него все прекрасно можно посчитать. Я почти сразу же решил эту задачу честной динамой и послал ответы, но весь контест не догадывался почему у меня WA3. Задача прекрасно решается без всяких модулей, зачем тут они — ума не приложу. Ну и задача на OEIS в роли задачи D... Браво! Дай бог, чтобы из второго дива хотя бы один человек сдал D динамой, а не тупым запросом в гугл.

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

good problems! thanks :)

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

How to solve D?

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

Hi, A person in my room has a TLE solution because his/her quicksort is binary cut: http://mirror.codeforces.com/contest/285/submission/3369236. All time in contest I can't make the test that kill his/her bug. Can anyone show me how to make the test to kill that quicksort code? Thanks.

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

    See what happens if pivot element is always maximal element in the subarray.

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

На чём ломали C?

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

A rare one , most of the passed pretests guaranteed passing the systests...

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

I think the number of the tests for D could be more.... 16 was to small, It's possible to get an array and save the answer for each test! EDIT: I saw the editorial! It seems that the solution is making an array!! Interesting! I haven't seen a problem like this!

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

Sadly... C# implementation of quick sort isn't perfect :( My solution for C problem failed.

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

В D при переписывании массива констнатного (1, 3, 15, 133...) пропустил одно число. Сразу после контеста бомбануло так, что прожег половину комнаты со всей мебелью, да еще и рухнула одна из стен, общая с соседями. Теперь я живу в коммуналке, спасибо тебе, "37851".

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

Hi all, a simple question here. For Problem A test case 3, input (3 2), why is (1 3 2) not an acceptable output?

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

    Since there is only one number, which satisfies p > p + 1

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

    I think we misread the problem in the same way :( At first I thought we just need pk>pk+1 It's not until 1 hour later where I understood that the coeff is referring to the number of such k where the above statement is true. Felt so stupid haha

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

      No wonder...thanks!

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

      I didn't get it. I thought we need to make sure that Pk is greater than P_(k+1).

      is that not the case?

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

        in the first test, 5 2

        1 5 2 4 3
        

        Pk = P2 = 5 (second position in the array)

        P_(k+1) = P3 = 2 (third position in the array)

        so that's why that's the correct output. But shouldn't 5 4 3 2 1 also be correct?

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

          So it's not just me and "ssi7415" haha. No, we all misread the problem. What is required that the number of such k is equal to 2. NOT that there is only one such k, and that k=2.

          So, for 1 5 2 4 3, there are 2 such k's where pk>pk+1. That is, 5>2 and 4>3.

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

respect to the guy/gal who submitted this!

http://www.codeforces.com/contest/285/submission/3375139

answered a D problem in ONE LINE!!

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

so i got TLE for #175 div2 C. But most solutions where similar & passed written in C++. so i tried to write it in C++ after the contest, it passed fast (500ms). furthermore, when i chose Java 7 it TLE at test 8, java 6 TLE at test 7. finally i changed long to Long, then it passed (1312ms)???

so why long TLE, and Long doesn`t?

http://mirror.codeforces.com/contest/285/submission/3376354 http://mirror.codeforces.com/contest/285/submission/3376365

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

    in other words in java, why is Integer[]a faster than int[]a, or Long[]a is faster than long[]a? does this mean Integer a is faster than int a?

    in terms of performance.

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

      UDP: Sorry, I misunderstood the comment.

      Because Long and Integers are objects, but long and int are primitive types. So every time you add one Long to another Long, they are converted to primitive types, then they are added and then they are converted back. But if you use long directly, they are just added. So this is why long is faster then Long.

    • »
      »
      »
      12 лет назад, # ^ |
      Rev. 5   Проголосовать: нравится +6 Проголосовать: не нравится

      Primitive types such as int and long are sorted by qsort, which in worst case may work in O(n^2) time. But Long and Integer aren't primitive types, they're objects. And objects in java are sorted by mergesort, which always works in (nlogn) time. That's all magic.

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

    Because for sorting arrays of primitive types it uses quick sort, for others classes — merge sort.

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

    IMHO, in first case java converts basic type(long) into object (Long) of every element and makes sort after that. and converts backward. I think so.

    P.S. Sorry for my english.

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

    Also you can just randomShuffle array before sorting. (It seems that there are a special array, on which java quick sort works for O(N^2), but merge sort does not)

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

    No idea. But mostly your code is slow because you're using Scanner to read 10^5 numbers. You can browse solutions of high-rated Java coders and use their I/O code.

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

      yeah using tokenizer made it about 500ms faster. but like aircube & Resurgent pointed out. it is the sorting that TLE. i just tried my merge sort instead of Arrays.sort() and it passed with about the same time as using Integer[] did. proving that Resurgent & aircube had a point there.

      one less thing i don`t knw

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

WOW! you are too fast! tnx :)

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

The first time I solved 4 out of 5. The problem D was a little bit tricky for me, but finally I managed to solve it :)

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

Опять у этих двоих одинаковые решения уже по 4-м задачам.

metalopocalipsis : А — 3367731, B — 3368553, C — 3372596, D — 3375755.

lawliet_djez : А — 3367389, B — 3368933, C — 3372757, D — 3375514.

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

    И еще один баг codeforces:

    metalopocalipsis Обратите внимание на рейтинг, 1512, а это должен быть эксперт..

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

      Это не баг.

      Это его так MikeMirzayanov наказал.

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

        aitzhan.askar уже давно должен быть синим...

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

          Не хочу, и не буду !!! :D

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

            Интересно, рейтинг -> expert, а есть ли возможность участвовать в див1.?

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

              В этом Кф официально принимали участие с такими же багами. Так что им скорее всего нельзя участвовать за див1.

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

По какой закономерности в D числа {0,1,0,3,0,15,0,133,0,2025,0,37851,0,1030367,0,36362925,0} ?

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

    Если я прав, то это объясняется так.
    q[] = {0,1,0,3,0,15,0,133,0,2025,0,37851,0,1030367,0,36362925,0};

    q[i] — количество массивов b[] длинной i, при a[] = {0, 1, 2, 3, 4, 5, ..., i}, и при этом сумма массивов a[] и b[] является правильной перестановкой.

    Объяснение суммы можно прочитать в условии задачи.

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

      Ну ясно, что q[n] (q[i] — количество массивов b[] длинной i, при a[] = {0, 1, 2, 3, 4, 5, ..., i}, и при этом сумма массивов a[] и b[] является правильной перестановкой.) надо умножить на n!. Не ясно почему q[n] будет именно такое.

      • »
        »
        »
        »
        12 лет назад, # ^ |
        Rev. 3   Проголосовать: нравится +11 Проголосовать: не нравится

        Надо просто немного почертить :)



        Представим, что слева у нас числа из перестановки A, а сверху — числа из перестановки C. Тогда на пересечении определённой строки и столбца будет стоять число, которое нам необходимо поставить в перестановку B, чтобы получилось

        .

        Ещё немного почертив, нетрудно заметить, что нам нужно из этой квадратной матрицы выбрать ровно N различных чисел так, чтобы в каждой строке и каждом столбце стояло ровно по одному числу. Так как равные числе у нас образуют диагонали в матрице, то всё к сводится как раз к задаче о расстановке ферзей на тороидальной доске (доске, у которой верхняя сторона соединена с нижней, а левая — с правой, образуя таким образом "замкнутость" диагоналей).

        Количество способов расставить ферзи на тороидальной доске размера (2N + 1) * (2N + 1) и есть последовательность A006717 в OEIS.