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

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

Добрый день, Codeforces!

Как-то даже я сам не понял как, но я вдруг взял и подготовил раунд для второго дивизиона. Мне кажется, это подсознание захотело как-то еще смягчить воспоминания о раунде 276.

Я очень надеюсь, что раунд пройдет на ура, как и прошел 277-й — без каких-либо нареканий на работу системы.

Выражаю искренние слова благодарности всем задействованным в подготовке — Максиму Zlobober Ахмедову, Марии Delinur Беловой, Полигону, серверам и Джеймсу Гослингу за Java. Еще я безмерно благодарен тому водителю, который меня всё-таки сегодня не задавил, хотя я, задумавшись о задачах, шел на красный.

Раунд будет рейтинговым, задач будет 6, а разбалловка — неклассической min(500 + i*500, 2500).

Удачи!

UPD.: Раунд передвинут на 5 минут вперед — мне очень хочется, чтобы все, кто хочет принять участие, успели на него. Извините.

UPD 2.: Рейтинг предварительно обновлен. Найдем читеров — применим меры, обновим еще раз. Спасибо за участие!

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

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

6 Problems means that we will enjoy more :) . This announcement made my day :D

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

That's probably my first round from MikeMirzayanov, finally :D

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

Thank You sir :D may Allah keep you in the best of health & happiness always :)

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

So the scores distribution will be with

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

Another sleepless night!

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

6 problems, more chance to enjoy!!!

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

start more and more contests if you can...we need them

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

Раскудрявый клён зелёный – лист резной. Здравствуй, парень, мой хороший, мой родной! Клён зелёный, да клён кудрявый, Да раскудрявый, резной.

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

Вы забыли поблагодарить MikeMirzayanov

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

I believe that codeforces will become more and more perfect. Great thanks to MikeMirzayanov for creating a fine platform,We appreciate everything you do.

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

Тэг "2775" почему-то без точки... будет в будуещем пересекаться с тэгом 2775-ого контеста :|

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

i think next contests will be 277.75 ... :D

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

This time, no thanks to Mike?

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

Mr. MikeMirzayanov I like the way you have made people's handles as their middle names :) that would be quite a nice way to introduce some people in real life :)

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

Mike as the problem setter? I want to take this round now.

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

It 's very interesting !

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

I was laughing something about 10 minutes to this :
"Also I am immensely grateful to the driver, who did not knock down me by car" :D

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

the driver, who did not knock down me by car

Of course , else he would be banned from CodeForces :D

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

6 problems, wow!!!!!!!!!!

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

Неужели никому не интересно, почему раунд 275.5??

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

MikeMirzayanov facts:

277.5) Once upon a time MikeMirzayanov fell asleep on the keyboard and accidentally prepared Div2 contest

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

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

Can't see the register option for this contest. somebody please help fast :(

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

The comment is hidden because of too negative feedback, click here to view it

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

6 Problems are welcome :D but will it last for 2 hours or more ??

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

Спасибо MikeMirzayanov за сайт Codeforces, удачи всем в этом раунде!

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

Meanwhile in Russia

Cold frost and sunshine: day of wonder!

But I'm on CF. My choice is done)

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

It's wery good that he added the contest, I cant understand why are you joking about this? Everythiing is done for us

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

updated scores will be min(500 + i*500, 2500).

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

hope for some good dp!!!

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

Hoping for a +ve color change.. :) good luck everyone

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

Unsuccessful hacking attempt always killing me! :/

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

Уберите эту ужасную чёрную рамку вокруг фото!

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

UPD.: Раунд передвинут на 5 минут вперед — мне очень хочется, чтобы все кто хочет принять участие успели на него. Извините.

+200 к настроению :)))

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

А хорошие задачки!

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

It was best contest in my life...i saw paging errors just one time...tnks a lot from all of friends who took this contest

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

How was problem F supposed to be solved?

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

    I solved using a dp.

    The states where dp[amount of columns that needs 2 '1'][amount of columns that need 1 '1'].

    The transitions would be picking 2 of these columns (out of all the possible ones) for each row.

    I hope it gets accepted.

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

very nice problem in your contest. thanks MikeMirzayanov

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

strong pretest 0.0

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

Can anyone give me a hint for F ?

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

    I did it in O(N^3) with DP[row][col1][col2], where col1 and col2 is number of columns with 1/2 remaining cells to choose. When you are adding new row, you may either choose 2 columns with 1 cell left and move to DP[row+1][col1-2][col2], choose 2 columns with 2 cells left and move to DP[row+1][col1+2][col2-2], or choose 1 column with 1 and 1 with 2, moving to DP[row+1][col1][col2-1].

    My first implementation was a bit messy and it was challenged, but after adding some prunings it looks fast enough.

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

Unfortunately, the website went down in the last 10 minutes of the contest which is the most crucial time! :(

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

How I can solve problem D?

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

    Also wondering

    I tried to enumerate every pair of vertices (B, D) and calculate the number of diamonds (assuming these two are the middle vertices of a diamond). Intersecting their parents and their children, I obtained the number of possible vertices (A, C) that could form a diamond. Also intersecting these two sets, I obtained the number of "repeated" vertices that are both parents and children of A and B, and thus can't form a diamond with itself. And add to the answer the value (parents * children — their intersection).

    But this approach gave TLE

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

    For each possible (end of diamond v; source of diamond u) we can count the number of paths of length 2 from u to v.

    Let us define cnt[v][u] as the number of different paths of length 2 from u to v. We run the following loop:

    1. For x in [1;n] {x is a possible middle point of the diamond}
      • For v in children[x]:
        • For u in parents[x]:
          • If u ≠ v:
            • cnt[v][u] +  + 

    Now we can easily obtain the answer:

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

    There's a simple O(N^2) solution (N^2 is an upper bound, actually it is faster I think):

    • For every node i, do a dfs (max depth 2) using i as root

    • During dfs, for every node j that you reach using 2 edges, update cnt[j] (where cnt[j] is the number of ways to reach j using 2 edges) PS: clearly you stop dfs when you use 2 edges

    • At the end of the dfs, iterate from node 1 to N and for every node j update result in this way:

      1. if cnt[j] < 2, do nothing
      1. else: ris += (cnt[j] * (cnt[j]-1))/2 --> This is a "reduct" form of binomial coefficient (I want to consider all rhombs starting to i and ending at j, so I can take all combination of 2 intermediate nodes)

    At the end of the whole process you'll obtain the answer :)

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

How to solve D ? And what is hacking testcase of B ?

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

Did anyone else experience heavy lag during the contest ?

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

How to solve E?

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

    Let's use binary search to find best possible ratio. When you fixed ratio R, then you know that for total picturesqueness of X you can take no more than R*X total frustration. So for every point you can calculate dist[i] which is equal to best possible difference between F(frustration that you have taken) and R*X. If dist[n] is not positive — it means that you can make ratio no more than R, because you found path with F<=R*X. Otherwise smallest possible ratio is larger than R.

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

      But how to deal with a lot of different picturesquenesses?

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

        When you stay at point X and have dist[X]=D, then you actually don't care about real values of picturesqueness and frustration. Only dist[X] matters — your "frustration reserve". When you move from X to Y — total frustration increases by some value F (cost of this move), and total picturesqueness increases by b[Y], which increases your "frustration limit" by b[Y]*R — it is the same as decrease frustration by b[Y]*R while not changing picturesqueness.

        Part of solution which explains this idea:

        for (int i=0;i<n;i++)
          for (int j=i+1;j<=n;j++)
          {
           double cost=-sqrt(fabs(.0+x[j]-x[i]-L));
           cost+=b[j]*ratio;
           if (best[j]<best[i]+cost)
           {
            best[j]=best[i]+cost;
            par[j]=i;
           }
          }
        
»
12 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I liked F , but I think my solution won't pass. Also very nice E , I don't know how to solve it yet. Congrats Mike for the round !

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

6 unsuccessful submissions to C because I printed "0" instead of "0 0"

Epic Fail(((

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

Problem D reminded me of this Google Code Jam problem !

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

Thanks for the nice problemset! Unfortunately I got overslept for the entire contest. When I woke up, the contest has ended.

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

Could anyone explain me why this algorithm got me WA in pretest 5 (problem D)?

  • Make a DFS from each node with at most 2 iteration.
  • If the distance is 2 add the current node in the rhList of the start node.
  • Sort each list.
  • Count how many pairs of numbers there are in each list (this means that if there are two numbers 2 then there is 1 pair but if there are four numbers 2 then there isn't any pair).
  • The answer is the sum of the results of each list.

Thanks ♥

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

I totally overkilled B by using flow =p

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

Solved C using regex'es (8726629).

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

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

Часто ли вы скидываете решения? Я вот сегодня, скинул, но я не умею решать задачи, поэтому мой код работает нестабильно, и иногда выводит странное предложение... Какое именно? можно посмотреть здесь : 8734999, 8733233, 8735813

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

can anyone explain me why code:

	const int MAX_N=3001;
	bool matrix[MAX_N][MAX_N]={false};

in my compiler makes error "Segmentation fault". (ubuntu x64), but in test system there is no error;

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

In problem E, we have to work with non-integer numbers, so I think we should consider output to be correct if the difference between output and answer is small enough (E.g, lower than 10 - 6)

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

very nice problem in this round,very thanks MikeMirzayanov :)

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

what a shame that you accepted B and C but your code was wrong for A... :(

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

Problem A:

define INF 1000000000 — WA 21

define INF 1000000001 — AC

It's about me. But it was very interesting contest for me.

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

tnx mike it's good conteset but PLZ unlike me :) plz

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

Спасибо за очередной интересный и достаточно стабильный раунд, а следовательно за хорошие впечатления MikeMirzayanov :)

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

Thanks to the ISP , we were cut off the internet country wide for over 9 hours and I missed the contest........in addition, living without internet connection was a wild experience.

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

Is there any way to solve D had the constraints for the same problem were as follows:
1<=N<=2000.
0<=M<=(N*(N-1))/2 instead of 30000 as given in the problem.

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

How to solve D if for the same problem, we modify the constraints as follows:
1<=N<=2000 (Number of intersections)
1<=M<=(N*(N-1))/2 (Number of edges).

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

    You may try N^3/32 solution. Generate bitsets of ingoing and outgoing edges for every vertex. Fix 2 vertices B and D (this gives us N^2), and count number of rhombi for this pair. To count this number, you should count number of valid A's for it (using bitsets of ingoing edges for B and D, you can make it in N/32 by taking blocks of 32 vertices from both bitsets and counting 1's in bitwise AND of these blocks) and number of valid C's for it (same idea, but with outgoing edges). Add the product of received results to the answer, and don't forget to substract invalid rhombi with A==C (to count them you should make same AND trick with all 4 bitsets at the same time).

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

for problem A why o(n^2) did not give me TLE 8739673 ?

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

Спасибо, было интересно!

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

Can Codeforces start the round at 7.00 pm (UTC+4) ? It's too late for me :v

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

Country Wise Rankings have been updated.