SuprDewd's blog

By SuprDewd, history, 6 weeks ago, In English

NWERC 2020 was finally held this last weekend after a few month delay due to the pandemic. The format was a little different this time around, with each contestant participating from home (i.e. three computers per team) and having full read access to the internet during the contest.

We wanted to let you know that this Saturday at 12:00 GMT we will be hosting an open version of the contest on Kattis: https://open.kattis.com/contests/nwerc2020open

The problemset, solution slides, testdata and judges' solutions are already available on our website, but we ask that you please refrain from looking at them until the open contest is over. Good luck, and we hope you enjoy the problems!

 
 
 
 
  • Vote: I like it
  • +35
  • Vote: I do not like it

»
6 weeks ago, # |
  Vote: I like it 0 Vote: I do not like it

This coincides with the div 1 codeforces round :(

  • »
    »
    6 weeks ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    That's unfortunate :( I don't think we can change the time now, sadly.

»
5 weeks ago, # |
  Vote: I like it +8 Vote: I do not like it

We had a solution to B that is very different from the jury's solution.

We define the function $$$f(i, d)$$$, which is given by

  • If $$$d \geq 0$$$, the number of operations we need to level everything, if positions $$$i, i+1, \dots, n$$$ are as normal, positions $$$i-1, \dots, i-d$$$ are $$$0$$$, and positions $$$i-d-1, i-d-2, \dots$$$ are $$$1$$$.
  • If $$$d < 0$$$, the number of operations we need to level everything SUBTRACTED BY $$$|d|$$$, if positions $$$i, i+1, \dots, n$$$ are as normal, positions $$$i-2, i-3, \dots$$$ are $$$1$$$, and position $$$i-1$$$ is $$$1-d$$$.

The answer is given by $$$f(0, \infty)$$$, and $$$f(n, d) = 0$$$ for all $$$d$$$.

Now, if $$$a[i] = 0$$$, then $$$f(i, d) = f(i+1, d+1)$$$.

Otherwise,

  • Let $$$0 < j_1 \leq \infty$$$ be the minimum value s.t. $$$f(i+1, j_1) < f(i+1, j_1 - 1)$$$ (this is the first amount where we want to push blocks past the left edge).
  • Let $$$-\infty \leq j_2 <= 0$$$ be the maximum value s.t. $$$f(i+1, j_2) = f(i+1, j_2 - 1)$$$ (this is the first amount where we want to push the extra blocks past the right edge).

Then, $$$f(i, d) = f(i+1, d - (a[i] - 1)) + (a[i] - 1)$$$ + $$$a(i, d)$$$, where $$$a(i, d) = 0$$$ if $$$d \in [j_2 + (a[i] - 1), j_1 + (a[i] - 1) - 1]$$$, and $$$1$$$ otherwise.

These updates can be made in $$$\mathcal{O}(\log n)$$$, though our implementation was $$$\mathcal{O}(\log^2 n)$$$. Thus, total complexity is $$$\mathcal{O}(n \log n)$$$.

code
»
5 weeks ago, # |
  Vote: I like it +21 Vote: I do not like it

The problems are available for upsolving on Kattis, but by popular demand we have also uploaded the contest to the Codeforces gym.