Блог пользователя boleyn.su

Автор boleyn.su, 12 лет назад, перевод, По-русски

Привет, Codeforces Round #221 начнется 24го декабря в 18:00 по москве. Раунд будет проводиться в обоих дивизионах.

Задачи готовили whd, oGhost и boleyn.su. Это наш первый раунд на Codeforces, и мы надеемся, что он будет весьма хорош.

Хочется поблагодарить Gerald и alpc104 за помощь в подготовке раунда, а также MikeMirzayanov за создание платформы, где все мы можем соревноваться и общаться.

Распределение баллов по задачам будет анонсировано перед началом контеста.

UPD1: Распределение баллов 500-1000-1500-2000-2500 для обоих дивизионов.

UPD2: Наши поздравления победителям! Также поздравляем с рождеством всех, кто празднует его сегодня!

Div 1:

1.Touma_Kazusa

2.al13n

3.rng_58

4.hmspmy077

5.uwi

Div 2:

1.bohuss

2.Tyg3R

3.xhsong

4.adamant

5.Kira96

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

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

Good luck

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

Hope the contest won't be like the last contest( Hard && Unrated ). Good luck to eveyone!!!

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

Good luck ... :)

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

Maybe people can already assume that every round announcement has some kind of grateful acknowledge to MikeMirzayanov, since it's becoming a bit boring to read that part every single time.

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

If this is the last round this year...

HAPPY NEW YEAR TO ALL :D

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

Why this blog isn't on the home page !?

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

Contest in Christmas Eve? And on top of that — at 18:00? Weird idea. I'm not familiar with Russian traditions, but in Poland at that time we usually gather with family around table and celebrate Christmas Eve :P. Other days will be better or at least earlier hours. Even though I will try to compete :P. In Poland it's not that bad hour, because it will be 15 :P.

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

Wow, three problem setters Chinese from RU! Look forward to it!

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

king base!time is good for chinese,thx for setter

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

Good time for chinese..

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

Люблю задачи от новых авторов)

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

Looking forward to it ! When the contest ends, it will be Christmas in China and we will have to go to school as usual ...

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

I love this contest!

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

Hope a better Contest than the previous one... That was not a Contest...

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

hope every contestant can have fun with the problem set :D

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

Желаю всем удачи на контесте!!

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

Have you changed the contest time or i need some sleep :) ?

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

Up-vote this comment if you can :P

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

Good Rate on Codeforces and Happy New Year))))

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

10 minutes before the contest and no score distribution published!

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

Just for Remember you said
The score distribution will be announced before the contest starts.

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

Я понять не могу, почему постоянно такая проблема — указать распределение баллов? Почему всегда это делается одновременно со стартом контеста, а то и позже? Кто мне объяснит?

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

Power belt, I have late for contest and registration. WHY registration starts at late evening? Should it be possible to open registration 1,5 day before contest?

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

Merry Christmas and Happy Halloween (Note : OCT 31 = DEC 25 :D )

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

Maybe I have a chance to go to div1...thx...

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

Как решать С (div2)?

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

    Например вот так:

    1. Находим первых вхождения 1, 6, 8, 9 и перемещаем их так, чтобы они оказались в самом конце нашего числа. (Или просто удаляем из него)

    2. Выбрасываем лидирующие нули, при этом учёв их количество (потом сможем вывести их в конце).

    3. Считаем остаток от деления на 7 числа, составленного из первых n-4 цифры. Попутно выводим их.

    4. После этого какой-то (можно высчитать для каждого случая заранее, а можно перебрать за 4!, это не очень долго) комбинацией из чисел 1, 6, 8, 9 мы можем довести любое имеющееся число до делящегося на семь. Найдя нужную комбинацию, выводим её. Затем отдельно выводим выкинутые ранее лидирующие нули.

    Вроде бы должно работать...

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

      А почему при помощи этих цифр 1, 6, 8, 9 это можно сделать?

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

        можно проверить, что перестановки этих цифр дают все остатки от 0 до 6.

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

          Да. Это просто надо знать! Теория чисел. Круто мне нравиться!

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

            Минусы от того что вы все знаете теорию чисел? Молодцы. Это очень хорошо.

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

              Вообще было бы не плохо снабжать свои минусы или плюсы комментарием. Даже в обязательном порядке. Ну вот например на мое высказывание — хоть один комментарий за что минус. Очень интересно.

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

                Этого не надо знать. Можно взять и на компе (можно даже и вручную) сгенерировать все перестановки 1,6,8,9 и посмотреть остатки.

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

                Понятно все. Нет меня не трогают минусы. Скорее всего меня не уволят с работы за них. Не уйдет жена. И не обидятся оба мои сына (они еще ничего не понимают). Но все-таки хочется знать критерии постановки минусов.

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

                  Было бы клево под лайками и анти- лайками ставить подпись. Как в контакте. Чтобы обмениваться любезностями.

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

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

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

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

                  Да наверное стоит к этому относится как просто к цифре с минусом и все. У меня вот нет математического образования и по образованию я борт — инженер. Мне просто нравиться программирование. Да и сейчас я работаю в этой сфере как уже 2 года. И действительно восхитился как не сложно решается эта задача. Ложки то нашлись а осадок остался.

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

                  Можно забыть про лидирующие нули, если поставить число, составленное из 1 6 8 9 в начало (тем самым, домножить его остаток от деления на 10^(n - 4)).

                  P.S А как давно это добавили?Ссылка на скрин

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

                  Целая простыня о том, как тебя волнуют, а потом о том, как не волнуют оценки к комментариям. Спрашивай и пиши коротко и по делу — будет меньше поводов получить минус за мысль «зачем я это читал».

                  p.s. «Круто мне нравитЬся» — многие ставят минус за ошибку.

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

nice contest!,but what is the algorithm to solve problem C DIV 2 or problem A DIV 1?

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

    C is pretty simple actually if you think of the reason why the setter used the digits 1,6,8,9. You can get all remainders when divided by 7 for some permutation of the digits 1,6,8,9. That is for every number x in {0,1,..6}, there exist a permutation of 1,6,8,9 such that when that permutation is divided by 7, it leaves a remainder of x. I think with this hint you might be able to complete the solution.

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

Will there be a tutorial published?

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

За какую сложность кто писал D? У меня O(Nlog2N), я отвечал в оффлайне, протаскивая вверх по дереву декартово дерево пар (количество, цвет) и приливая меньшее к большему.

UPD: Я забыл упомянуть, что я ещё и протаскиваю вверх обычный мап, в котором для каждого цвета держу его количество, а это ещё + O(Nlog2N).

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

А я один решал в B два часа задачу, где можно менять и столбцы, и строки? И долго удивлялся, как это сдают все, кому не лень — оно же на НП-хард похоже.

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

Yeah.. Div1 is too hard to me.. I'd better back to div2...

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

Saw few people use sort in problem B div 1. O(n*nlogn) should get TLE right? I went out of my way to use bucket sort to keep it O(n^2).

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

Is cin very fast on codeforces? I was surprised that cin solutions worked in B.

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

Problem Maximum Submatrix 2 is essentially exactly the same problem as http://www.ceoi2009.ro/tasks/logs.pdf :(

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

Need hints for problems C div 2 :( soon :D

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

    That problem looks very artificial to me, these numbers must have some magic.

    So I submit a crazy solution 5502926: until find a solution, do some random swaps, and if time out then output 0. And it passed system test.

    Seems it can't be no solution, but I don't know why. :)

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

      For every 0 ≤ r < 7 there is a permutation of {1,6,8,9} that (being read as a 4-digit number) yields remainder r when divided by 7. Choose the right one and append all the other digits to it.

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

      You can rearrange 1,6,8,9 to form all mods from 0 to 6 -- so just order the rest of the numbers in any order, then output the correct permutation: http://mirror.codeforces.com/contest/375/submission/5507138

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

      For each 0<=r<7, there exists a permutation of {1,6,8,9} as (r*10 000 + permutation) % 7 = 0
      So, you choose a random order for the initial number (just conserve one 1, one 6, one 8, one 9 and count number of zeros), then you calculate the rest of this number, and you choose the valid permutation of {1,6,8,9}.
      You can then add as many 0 as you want lastly.

      sample: 123456789 -> (23457 * 10 000 + permutation) % 7 == 0 -> permutation = 1869
      (and with zeros:) 1230000456789 -> (23457 * 10 000 + permutation) % 7 == 0 -> permutation = 1869 -> result = 2345718690000

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

Если это сообщение наберёт пять плюсов, я поною по поводу контеста. Збань, привет.

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

Самый удачный для меня контест! Первый раз удалось решить 4 задачи за контест. :)

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

Very interesting problems, and no complex algorithm. LIKE it:) [Although i have solved a little tests] Hope u can papare more contests in the future!!

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

Are u kidding? N log^2 N solutions in D that use dat slow c++ map pass with a great handicap. Well, maybe I'm unfair cause I spent alot of time doing N log N solution, but I bet on weak tests.

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

And for second time in a row a purple coder takes down the Div 1. Congratulations, Touma_Kazusa :).

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

ну блин, с каких пор N2logN тлится при N=5000?

>:(

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

in problem D,why my O(n*m) solution get tle? 5509804

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

Эх, на один бы взлом больше и... =)

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

thanks pretest #11, for problem A (div-2).

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

Could someone explain the solution of Problem D? Thanks in advance

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

How to solve E div 2 / C div 1?

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

The "Custom test" feature here limits testcase input to 256KB, but the maximal testcase for "Maximum Submatrix 2" (Div 1 B, Div 2 D) has a 5000x5000 matrix (25M elements), so it seems impossible to properly test the maximal case for TLE against Codeforces servers (even if you hardcode the testcase in the source, you're circumventing the time taken reading input). Is there any good strategy for handling this, or any way around this restriction?

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

F@uk...Pro D,,my time is n*m*logn.....TLE.= =

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

What does I.O.U (name of problem B of Div 2) stands for?

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

I don't understand why in B/D n<=5000. Many people submitted correct solution, but because of using (in my case cin) got TLE. I think n<=1000 would be enough for solutions with bad asymptotics to not pass.

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

Am I missing an easy solution to Div1 D or so many people have managed to code solution that resembles mine? I've done it by an algorithm which resembles heavy-light decomposition. I've done DFS, computed some data for every subtree and in one vertex I copied the data from smaller subtrees to the biggest one, which results in O(n log n) solution. I was really satisfied to get this problem accepted :).

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

    Can you explain more detailed your solution? In Russian comments here we discussed accepted solutions in O(Nlog2N) with the same "copy data from smaller subtree to the greater one" idea, but the data was stored in log-time containers, such as Cartesian trees and Fenwick trees, so asymptotic was O(NlogN·logN) = O(Nlog2N).

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

      There is also a solution with complexity O(N * log^2(N) + (Q + N) * sqrt(N)) without advanced data structures, by splitting the set of colors into heavy and light sets such that light set contains colors that have < sqrt(N) elements and heavy set contains colors that have >= sqrt(N), then the light sets could be processed with simple dp on tree, and heavy sets could be computed using the "copy data from smaller subtree to the greater one" idea because there is at most sqrt(N) heavy colors.

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

      Here is my code that got accepted: http://mirror.codeforces.com/contest/375/submission/5508056

      For every vertex v I call DFS(v, log) where log is some number between 1 and log n. If vertex v has children v1, ..., vk and vertex v1 has the biggest subtree, I call DFS(v1, log) and DFS(v2, log + 1), ..., DFS(vk, log + 1). If I call DFS for vertex v with corresponding argument log, after calling DFSes for its children I want to have some data in col_num[log], at_least[log] and ver[log]. For fixed color c, col_num[log][c] means how many there are vertices in this subtree with color c, for a number k, col_num[log][k] means how many there are colors c such that col_num[log][c]>=k and ver[log] is simpy vector of all colors of vertices in this subtree. Those data allow us to simply answer all queries in each vertex and update corresponding data in our parent in time O(size of our subtree) (if we aren't the biggest subtree's of our parent's children's subtrees) which results in O(n log n) complexity of whole algorithm. If our subtree is the biggest subtree of our parent's children's subtrees, our parent just treats our complete data like its initial data and update it by other children subtrees.

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

Power of MS C++!!! I think if lots of TLE codes submit their codes with MS C++ compiler,
they will get accepted!
Accepted Solution: 5511246 and 5511362 and 5511553
TLE Solution : 5511075 and 5507435 and 5505552
I submitted these TLE solutions with compiler MS C++ and got AC!
What is the real reason?

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

    problem B sux

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

    you can't strongly say that MS C++ is better than GNU C++. The difference is that cin and cout have been defined differently in these two compilers. The time of cin in MS without ios_base::sync_with_stdio(false) and with it is really close, however there is a massive difference in GNU with ios_base::sync_with_stdio(false) and without it. But GNU is faster with syncing than MS with it. I can show u a lot of codes which got acceptance with GNU with syncing that same code in MS didn't.

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

Div.2 Problem D I add ios::sync_with_stdio(false); and pass.........

Can anyone help to explain?!

What a pity...

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

Feel quite disappointed about the problems setter (or the translator) of problem D div 2. You can rearrange the row but each col MUST BE ORIGINAL

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

Можете объяснить почему 5505144 Runtime Error в задаче 376B - Задолженности ?

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

Div.2 Problem D: priority_queue got TLE (AC in MS C++), push in vector and sort got AC :(

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

I don't know about you guys but I used a physics formula for Div 2 A. Is there any other solution?

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

Thanks for nice contest! It requires an ability to write fast without bugs not-completely-simple code in each task.

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

Can someone please tell me where my solution for div2-C is failing? I made use of the mathematical trick of finding %7 for large numbers.

http://mirror.codeforces.com/contest/376/submission/5506741

UPD: Found my mistake. Thanks to Zlobober ! :)

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

It is realy unfair..... algorithm and and implement is correct only because of ios::sync_with_stdio(false); I get TLE....

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

It was really best Christmas present, thank you very much and see you in DIV 1 :)

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

+100 :D

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

It is recommended to test the maximal case locally.
I think that it takes less than two minutes to write a code to generate maximal case.

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

+198 :)

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

First of all, thank you for preparing the problems for us. It was a nice Christmas Eve.

However, I would like to point out the problems is not very good (at least for me).

For Problem B, it is EXACTLY THE SAME with CEOI 2010 Day 2 Problem 1 Logs (the only difference may be the problem from CEOI asks rearranging the columns).

And for problem C/D, I cannot recall clearly the source of these problems but I have solved tons of problems based on the old idea.

I hope that Codeforces can have more problems with new idea instead of the old one. New idea may be easy, simple, interesting, ... but it is good.

Anyway, problem A/E is really nice (maybe adapted from Chengdu Onsite 2013?). I don't come up the solutions till now.

Thank you again!

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

    Well, if D has a nicer solution, than "move-info-from-smaller-subtree-to-larger" one with using some complicated data structures like maps, hashmaps, cartesian trees, fenwick trees etc (that are discussed above in Russian version of the site) then it would be great to know about them. Maybe when problemsetters publish editorial we will find more interesting solutions to it.

    And C seems very nice and interesting for me. Can you give a sample of the problem with the same idea? Moreover, if authors didn't have to explain, what does "inside the closed curve" mean, it would have been really cool problem (but with such explanation in task the idea to store a mask of oddity for each object becomes much clearer and obvious).

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

      The Grove -- USACO 2006 January Silver

      As far as I knew, this may be the first time this idea appears. The problem can't become cooler by replacing the definition into something like "reach from the infinite point" since it must allow multiple pass of one cell. It is not that natural.

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

      If someone has read this and not my explanation few posts above — yes, instead of maps, trees and other stuff, you can use arrays :D -> http://mirror.codeforces.com/blog/entry/10034#comment-155315

      But one one drawback is that this results in also O(n log n) memory, there are other approaches with those more complicated structures which requires O(n) memory only. But if it fits into limits, there's nothing wrong with it :).

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

      "if authors didn't have to explain, what does "inside the closed curve" mean, it would have been really cool problem" — imagine a closed curve with many selfintersections (those are allowed in this problem!). Could you clearly state what's its interior and what's its outerior? These 2 words are losing their meaning and the only thing that can tell them apart is this parity definition.

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

        Yes, that's exactly what I meant by phrase "authors have to explain what does that mean".

        hmspmy077 in his comment above showed much nicer task, that deals with that problem another way. For that task there is no need to define what interior exactly is, because it uses only the "walk around the connected figure" conception, which is much simpler to imagine and doesn't require additional clarifications.

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

    Problem A is not new at all — see there http://acm.timus.ru/problem.aspx?space=1&num=1095 There's about 2000 sucessful submissions on it on the most famous Russian online judge.

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

I did not write this round well,but I liked problems very much,thanks authors for contest.

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

How did people use sorting to solve Div2 D / Div1 B? O.o

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

Alternative problem for Div 1 A/ Div 2 C:

Is there a simple solution at this problem:
Find a permutation of a number n composed only by 1,6,8,9 digits (666,1689 etc...) divisible by 7
I tried to solve this problem during the thirty first minutes before finding my misunderstanding...

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

    As long as there's at least one occurence of each of numbers 1,6,8,9 in that number, it's the same as Div1 A :D

    For arbitrary numbers: if the input is small, you could do DP on (remainder,how many digits of each type you have left); if it's large, there are either few ways to solve it or a permutation should always exist, like numbers "16666666","61666666",...,"66666616" which give different remainders mod 7 — so it's enough to consider a random permutation of other numbers before it and choose the ending few digits that are good.

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

      Ok, so for larges numbers, we can't have perfect polynomial solutions (I mean, without using random) ? Anyway, thanks for this answer.

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

        I think we could get constant time solutions. Well, constant if we had just the occurences of 10 digits (if we don't limit ourselves to 4). Actually, digits with 7 possible remainders.

        As long as the number is diverse enough, there should be a small subset of digits such that there's a permutation of them with remainder x for all 0 ≤ x < 7; if there's such a subset, the length of the number is, in fact, irrelevant — no matter what permutation of the remaining digits we use at the start of the number, we can always pad it with the suitable permutation of our subset.

        The problem we got just specifies the subset for us: remainders "1,1,2,6". This is quite small, and I don't think any required subset (that doesn't contain any smaller required subset) will be much larger. Notice for example that the subset "many 6-s and 1" that I presented can be replaced by "many x-s and y", and it still holds for x, y giving different remainders mod 7 and even any prime modulus (not just 7) with 10 as the primitive root!

        That leaves us with the task of bruteforcing all suitable subsets, hardwiring them into the code and just choosing the right one for any number :D

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

Thanks for the round! The problems were very clever, even though I didn't solve them during the contest!

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

Timus 1095 is exactly the same with today's A div 1. The only difference is digits used but I suppose that there're many different sets of 4 digits that work in this case — it doesn't mean though that problems will be different as well.

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

:(((

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

Не особо хотелось, но раз уж такое дело...

Достаточно долго придумывал и писал решение по А. Ну да ладно, вроде написал, отправляю. ВА4. Что?! Код же практически идеален. Ладно, ищу багу. Нахожу — хвост делал с таким же остатком, как у первой части числа, а не с (7 — остаток). Исправил, ну теперь точно правильно. Отправляю без теста на семплах. ВА2. Как так?! Нахожу ещё багу... После цикла с подсчётом первой части числа не умножаю остаток на 10000. Теперь уж потестил на семплах — претесты пройдены.

Задачу Б тоже достаточно долго придумывал для её простоты, но и ладно. Написал, засылаю — ВА4. Баги, баги... Таак, я в своём решении двигаю не строки, а столбцы, отлично. Меняю решение, отсылаю без теста на семплах — ВА2. Ну что за дела... При подсчёте подряд идущих единиц делаю cnt[i] += cnt[i] вместо cnt[i] += cnt[i + 1]. Шикарно. Отправляю снова без проверки на семплах (заметьте, какой я самоотверженный). И... ВА3 (да-да, это семпл). Снова ищу багу. Умножаю на (m — j) вместо (n — j). Одна бага замечательней другой. Исправил, отправил, прошёл претесты.

Задача С как-то не далась. Начал думать над Д. Долго мучался, извращался, придумал только за квадрат, эх, ладно, почему бы не пойти не поломать, видел в таблице плюсики за взломы. Смотрю решения по А. Вроде всё правильно. Особо негде и не набагаешь. Так, решение с BigInteger для проверки на делимость. Забано, но не поломать. Перехожу на задачу Б. Смотрю, смотрю, особо ни к кому и не придраться, возвращаюсь к оставшимся кодам по А. А вот и что-то интересное — следующее решение с оператором next_permatation(s), где s — исходная строка. Радуюсь, пишу тест, на котором должен быть ТЛ. Решение проходит... Непонятно. Пишу новый тест. И его проходит... Вот я лох, даже такую ерунду не могу взломать. Пока я осуждал себя, контест закончился. Решение то, конечно же, упало на систестах.

Но и это не всё. Решение Б падает с ТЛ. На контесте почему-то оценил решение O(n^2*logn), подставив n = 1000 вместо n = 5000, поэтому показалось более или менее годным. В последние минут двадцать глянул ещё раз решение перед тем, как блокировать. Думаю: "Ну, по сути, должно заходить. Можно, конечно, исправить сортировку слияниями на сортировку подсчётом, чтобы уж точно заходило. Хотя... Не, и так очков раз два и обчёлся, не к чему терять ещё, блокирую".

В общем, я снизу таблицы. Большой минус, выход в фиолетовую лигу.

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

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

    Я пока поношу тогда Ваши оранжевые штаны. С позволения...

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

    Каждая лишняя попытка — минус 50 очков, что соответствует 25 минутам задержки для задачи (500) и 12 минутам задержки задачи (1000). Поэтому лучше потратить две минуты на локальный прогон претестов и чего-нибудь еще, чем не потратить.

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

А как сообщество смотрит на идею о том что бы в обязательном порядке добавлять макс тесты (по времени чтения данных) в претесты, вроде этим мы ничего не теряем (кроме времени исполнения претестов) просто отсекаем тупые баги из серии считал string (при помощи cin, geline) или char[] (scanf)?

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

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

Anyone get TLE at DIV1-B, try scanf("%s") instead of cin. what a sad story, my O(N^2) solution with very small constant coefficient TLE.

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

Can anyone explain test 4 of Pro.B div 1 (or Pro.D div 2) for me ? In the first row we have 10 ones so we can put ones adjacent so that we have a rectangle with size 1 x 10, or I misunderstood the problem ?

http://mirror.codeforces.com/contest/375/submission/5515862

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

What is the official solution for DIV1-D? When I read other's AC codes, to my surprise the moving-interval solution could pass-_-!!

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

questions were interesting and little bit tricy...Hats off to problem setters!!!

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

Can you post the editorial please.

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

То, что фиолетовый выигрывает второй раунд подряд на КФ — это новая мода? Может, в следующем КФ поучаствовать?