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

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

Всем привет!

Сегодня в 19.30 по московскому времени состоится Codeforces Round #319, который настоятельно не рекомендуется кому-либо пропускать.

Автор раунда — я, меня зовут Дима Горбунов, и это мой первый раунд на Codeforces. Я очень надеюсь, что вам понравится раунд, и каждый найдет себе задачу по вкусу. Для того, чтобы увеличить вероятность этого события, пожалуйста, прочтите все задачи этого контеста.

Как всегда, благодарю Zlobober за неоценимую помощь при подготовке контеста и утонченный юмор, sankear за написание перекрестных решений, Delinur за перевод условий на английский язык и MikeMirzayanov за потрясающие системы Codeforces и Polygon.

У вас будет два часа на то, чтобы решить 5 задач. Успехов!

UPD. Разбалловка в первом дивизионе — 500-1250-1250-2000-2750.

Во втором — 500-1250-1500-2250-2250.

UPD2. Из-за тестов большого размера по некоторым задачам, системное тестирование будет идти медленно (возможно, займёт несколько часов). Благодарим за терпение!

UPD3. Разбор можно найти по ссылке.

UPD4. Winners!

Div1:

1). Marcin_smu

2). mnbvmar

3). I_love_Tanya_Romanova

Div2:

1). latisel

2). wrong_order

3). ntitry826

Отдельный респект al13n за правильное решение задачи Div1.E во время контеста!

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

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

Trinity Contest

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

Registered with bells on :)

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

If it can be postponed for 24 hours, that will much better. Friday is not weekend. Go to school or go to work prevent us from getting up late, even though we participate in Codeforces Contest in the evening.

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

Thank you for contest, I think in this contest will be interesting and a lot of hacks. Sorry for my poor english

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

Will the problems be sorted in an ascending order of difficulty?

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

weekend or not weekend ,i hope contest will be running.

Because it is div2 round and it will happen after a long time.

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

Thanks for this holding this CF round and hope everyone can get good score!

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

I hope the problems will be short and to the point. Not with long stories.

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

Wish me positive contribution :P

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

looking forward for your first set of problems :D

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

Hope that more contests will be scheduled at 11:00 instead of 11:30

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

Time to lose red!

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

hope understand from first time read :3

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

Did you notice that registration finishes as time contest starts not 5mins before...
P.S No That was an error I think? When I looked both times were same..

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

это только у меня CF начиная примерно с часа, после начала контеста жутко лагал?

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

Thanks to author!

contest was great

,how to solve "Modulo Sum"?

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

What is happening? Why the contest is still running when everybody stopped and there was even a window with information that coding phase has finished?

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

Was the round extended? Cause I did'nt get any notifications.

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

Seriously, no adding minutes for the round? And system is not available last 5 minutes of contest.

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

Господа, продлевать контест после того, как все увидели плашку — это ппц!

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

Are you going to cancel submits after 2:00?

Btw. I lost 5-6 minutes not knowing that round goes on. And I found a bug 10 seconds after the final end. I hope it wouldn't get AC — http://ideone.com/6DVME8

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

Продлевать контест вот так вот, без оповещения — не дело. Я-таки мог за потерянные 2,5 минуты запихать C-шку.

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

    У меня прикольнее было. Минут за 15 до конца контеста понял условие в В, начал писать, тысячу раз набажил, пока ловил баги — хром вывел сообщение "контест закончен". Я, расстроенный, сижу, дебужу не спеша. Нашел ошибки, думаю послать в дорешку. Пытаюсь открыть архив, вылезает надпись "администратор заблокировал архив". Вхожу в контест(счастье, что в этот момент не очень сильно лагало) и вижу, что контест продлили еще на 10 минут. Вставляю решение, отсылаю за 36 секунд до конца. В это время залагало, и уже после завершения контеста пришла надпись "претесты пройдены". Теперь сижу, жду систестов)

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

Я хотел написать такое решение на D(Div2) но конечно не успел: Если есть x такое что p^2[x]=x и для всех остальных чисел p^k[y]=y тогда и только тогда когда k четное, тогда ответ YES и все связаны с x либо p[x]. Иначе NO. Это правда?

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

I hacked 2 C-div1 problems with carefully written cases to solutions close to what I believe is the correct answer (somehow partitioning the space in chunks of size 1000xsth and move around them properly).

However, if they are partitioning them in chunks of something different but close to 1000, my test cases probably won't work because their structure is completely messed up,since they are meant against partitions of 1000 (could have been 1001, nothing special in 1000).

Can you come up with a way of creating a challenge that doesn't assume a particular number with which partitioning space? There should exist some of those in system testing, but I cannot come up with them.

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

When editorial will be available?

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

Задача B(Div.2) — O(N*M) ?

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

    Да

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

    да, но вообще, как я понимаю, максимальное кол-во операций порядка 10^6(тк, почти всегда(может быть вообще всегда),если n>=m, то ответ да, следовательно достаточно дойти до n = m, а m <= 1000)

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

    Я делал с структурой bitset, которая работает на константу быстрее простого перебора по остаткам

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

      map пройдет?

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

        Map и bitset совершенно разные структуры, так что не понимаю вопроса

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

          Можешь объяснить свое решение див2 Б? Оно смотрится намного интереснее, чем то, что в разборе.

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

            Стандартная динамика dp[j] — можем ли мы получить остаток j, используя первые i элементов. (Измерение по i не нужно) Вместо обычного массива для dp используем bitset размера 2 * m. Bitset поддерживает все битовые операции. Храним единички на местах, где мы можем получить остаток j. При добавлении нового элемента, если мы можем получить какой-то остаток j, то записываем, что мы можем получить остаток j + a[i] % m. Если делать это с помощью bitset, то это выглядит так: a |= a << (a[i] % m). Где-то j + a[i] % m могло получиться >= m, в таком случае нужно сделать так, что если (m + k)-ый элемент равен 1, то k-ый элемент тоже должен быть равен 1.(т.к (m + k) % m = k): a |= a >> m;
            Потом ставим 1 на место a[i] % m: a.set(a[i] % m); Ответ YES, если на нулевой позиции стоит 1(можем получить остаток 0), иначе NO

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

        Bitset — это конкретная структура, в С++ есть такой библиотека . С помощи этим можно любую битовые операции.

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

When will editorial be available?

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

The connection problems were unfortunate, but I really liked the problems, great job! B was especially interesting.

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

For C div2, My solution is to print all prime and perfect square numbers that are less than or equal 'n'.

Why is it wrong ??

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

How solve problem C div1 ?

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

Wow , do we have a new dreamoon_love_AA : .o. ?

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

The problems are awesome. Hard to believe none of them had been used before. =)

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

How to solve Div1-D?

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

Div 2 D anyone??

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

please make testcase so as to fail all n*m solutions mine n*m failed while this HURTS

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

    That solution is not n*m. That solution is min(n*m, m*m). (The loop will always break after at most m iterations, for reasons discussed above).

    In other words, that solution is correct.

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

Anybody who solved C(Div 1) as follows. Divide into 1000 blocks with 10^6x1000 rectangles. in each rectangle sort points by (x[i]+y[i]), I think it can be proven that will give 2n \sqrt(n) bound.

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

Why there wasn't any announcement for the extra 10 minutes!!

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

    I tried to submit solution 2 minutes before contest end and I could not do it. 15 seconds before end I could submit, but I was not fast enough. I waited 2-3 minutes to see if contest is extended, but it was not. The only good think is that my solution would be incorrect anyway as I checked.

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

Div 2. A. What is a worst test case time complexity for this solution? 12930538.

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

    It seems to be that the worst case for that solution is a n = 10⁵ and x = Highly composite number below 10⁹. It may be something like divisors(x) * n. On a quick analysis it seems that x has more or less 10³ divisors. So, the result should be 10⁸.

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

LoL, why this solution gives TLE:12934189? Is it because of using vectors?

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

Ugh, I only had a bit less than one hour for the contest. To be precise, I'm travelling and the only place where I could do the contest was one train/bus station (next to each other). But the train station's net hotspot didn't work and the bus station only has a 3rd party connection with 1 hour free, then nothing. So I hurried a lot and I think I'm going to fail both B and C.

Why couldn't the round be 2 hours earlier... I could've done it at home then...

UPD: yes, I failed both B and C.

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

2s * 617sols * 50tests ~ 900 min testing (task C)

Where am I wrong?

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

Am I the only one who mistakenly read the constraint in problem C as 2.5·108 instead of 25·108? The common agreement about scientific representation of real numbers is to use normalized notation and according to it the constraint in problem C should've been 2.5·109.

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

Too scared to look at my submissions page.

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

После конца контеста понял, что в C было манхэттенское расстояние(а не евклидово ;c)

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

Those permutation problems are cool

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

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

What is special at test 9 from div1B? I looked at my source 10 times bbefore submitting it to be sure I don't miss anything. I've even hacked some sources=)))

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

I might be the happiest blue coder to-be ever!!!! Should be out of green right??!!!!

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

"and it's strongly disadvised to skip it."

Nice trap

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

12936106 12937847 . по моему одиннаковые посылки

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

Look, the green coder latisel is the winner of a Div2 contest!, oh wait look at his previous contest here.

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

I passed D with "bad" solution :) Only optimization is order of for loop in matrix multiplication — I remember reading somewhere that you can make naive multiplication cache-friendly by switching order of for loops from i, j, k to i, k, j. And after that, all that's left is a trivial if statement that checks a[i][k] isn't 0 before multiplying it with the for loop with j.

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

вот такие они, зелёные победители:

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

for DIV2 B: can any one find whats wrong with this submission: http://mirror.codeforces.com/contest/577/submission/12944993

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

Ясно с этим раундом, претесты проводят простой перебор на B, который за nm, но не проходит на полных тестах а дело то всё в том, что если мы находим ответ YES, то нужно просто выйти, если продолжать до конца(O(nm)), то будет TL

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

    На самом деле если N >= M, то сразу можно выводить YES, а иначе O(N*M) не так уж много. Это можно доказать, но мне лень, но могу привести задачу с Тимуса, решив которую за О(N), вы поймёте примерное доказательство.

    P.S. Знал бы ты, сколько я заведомо ТЛьных решений упихивал только за счет того, что когда мы нашли ответ, то стоит его просто вывести. Собственно, изначально ту задачу с Тимуса я решил, упихав O(N*N).

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

why does the use of pow function from math library give a WA while without that its AC... Ans 1 : with pow func http://mirror.codeforces.com/contest/577/submission/12941362 Ans 2 : without pow func http://mirror.codeforces.com/contest/577/submission/12947283

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

al13n got 90 tests on problem E, but Endagorion got TL on 96 test, wtf?

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

hi.. i think that there is something wrong with codeforces compiler this code gives wrong answer on test4 problem C http://mirror.codeforces.com/contest/577/submission/12937746 i tried the same input with the same code on my computer and on ideone (http://ideone.com/hIQ3BM) and it gave the right answer.. could any one pleas tell me what is going on?!!

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

Кто-нибудь может объяснить почему в задаче "B. Сумма по модулю"

при параметрах 2 47 1 0

правильный ответ YES Я не понимаю как из чисел 1 и 0 можно сделать число которое делится по модулю на 47.

Спасибо!

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

Div1 C checker is awesome!)

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

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

I didnt became div1, but I am too close. I hope at future to be :) Thank you for the great contest!

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

Finally got into Div. 1 ..

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

Thanks pretests...

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

2496501499 in C, seems legit :D

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

This is really bad in cf. TLE with cin and AC with scanf for div2 B. These are the solution links 12935258 12951554

My rating also went down. It could have gone up

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

Объясните пж, кому не лень, что за мэджик-ускорение в авторском решении С (div1)?) Попытался сам написать аналогичное авторскому решение за nlogn; оно пашет, но ТЛится на тесте с 10^6 вершин по непонятным мне причинам...