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

Автор Hasan0540, 6 лет назад, По-английски

Hello everyone,

The problem set of the 2019 PSUT Coding Marathon will be available in Codeforces Gym on Apr/30/2019 18:00 (Moscow time).

You will be given 5 hours to solve 11 problems of difficulty similar to Div.2 contests. The problems are sorted by their estimated difficulty but we recommend reading all problems.

The problems were written by Reem and Hasan0540. Thanks to Jester, Vendetta. and Dark for helping us in preparing some of the problems.

Errichto will be solving the problems in a live stream soon (the time and links will be posted here later). We believe it would be a great learning opportunity to participate in the contest and try all problems and then to watch the stream.

We hope you enjoy the problems and we welcome all feedback!

UPD: Errichto will do the live stream tomorrow, more details here.

UPD: PSUT Coding Marathon 2019 — solving with commentary

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

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

Reminder: contest starts in 30 minutes.

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

How to solve C? my solution is like this: if n <= 5 print -1 else for even i swap a[i] and a[i+n/2] ( without reswaping if it's already swapped) , but i got WA on pretest 3 ( n = 6 I guess)

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

    n = 5 is possible. One way is to have

    1 2 3 4 5

    become

    1 3 5 2 4.

    I'm also not sure how your algorithm works. Did you try it on n = 6 case?

    With your algorithm,

    1 2 3 4 5 6 becomes 4 2 6 1 5 3

    but here 1 and 6 are adjacent in both cases.

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

      I forgot to mention that this method fails with the last element only, so i added an extra loop to swap last element with another without breaking the rule code

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

        It doesn't only fail with the last element: in the example I posted above, 3 and 4 are adjacent in both cases.

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

how to solve I,i try a O(n(logn)^2) approach but it fail

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

    When solving for a project type $$$p$$$, sort all the nodes of that type according to their dfs start time. Say the order is $$$u_1, u_2, ..., u_k$$$ Now you can simply do this,

    int ans = dist[u[1]];      // dist[u] = distance to u from root
    for(int i = 2; i <= k; i++)
      ans = ans + dist[u[i]] - dist[ lca(u[i],u[i-1]) ];
    

    Short explanation : Suppose you have got the answer of $$$u_1, u_2, ..., u_{k-1}$$$ and you add a new node $$$u_k$$$ in the set. Now you are just adding the distance to $$$u_k$$$ from root, but some part of the path might already be taken previously. And that part is basically lca to the previous node. This works because we sorted all the nodes by their start time.

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

      Thanks, first i think like that but i consider that we will have inclusion exclusion principle

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

Please provide editorial

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

I've been trying problem D but I'm getting a wrong answer on test 16, can anyone help me with this?? my code link https://www.codepile.net/pile/ZaE7XZN3

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

    Your code will fail at this type of test case

    6
    5 7
    6 7
    7 7
    

    your code is printing -1 but answer will be 5 7 7 7 7 6.

    mistake is in compare function where you are comparing only on the basis of l but if l is equal you have to compare on the basis of r as well.

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

How to solve problem F

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

    Failing solution: let dp[i] be maximum log(prefix). AC solution: let dp[i]=max log(prefix[i]) — max log(prefix[i-1]). 54271985

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

Solutions for problem J (Graph to Grid):

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

The stream collaboration thing is great. I wish it happens with more contests.

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

Hasan0540 Today I was doing this contest and by accident I found a bug in your checker for problem D.

Check submission 59608300 test case number 9, I forgot to terminate the code after printing -1, resulting to printing extra numbers. It looks like your checker stops when a user prints -1.

However, I was expecting interesting contest and problems and I was not disappointment all all. Thanks lot :D