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

Автор awoo, история, 2 года назад, По-русски

1739A - Неподвижный конь

Идея: BledDest

Разбор
Решение 1 (awoo)
Решение 2 (awoo)

1739B - Восстановление массива

Идея: BledDest

Разбор
Решение (Neon)

1739C - Карточная игра

Идея: BledDest

Разбор
Решение 1 (BledDest)
Решение 2 (BledDest)

1739D - Сбросить k ребер

Идея: BledDest

Разбор
Решение (awoo)

1739E - Робот-пылесос

Идея: BledDest

Разбор
Решение (awoo)

1739F - Дизайн клавиатуры

Идея: BledDest

Разбор
Решение (BledDest)
  • Проголосовать: нравится
  • +59
  • Проголосовать: не нравится

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

Can someone suggest problems similar to Div2 C: Card Game, which requires DP, Combinatorics and some thinking. Thanks!

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

For those who just want to see the recurrence used in solution for C:

$$$dp(n, p) = {n-1 \choose \frac{n}{2}}+ dp(n-2, p^{-1})$$$

Let $$$p$$$ represent some player, and $$$p^{-1}$$$ represent the opponent of that player.

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

When does the robot break? Let the robot currently be in the cell (j,i) (0-indexed) and the next column with a dirty cell be nxti (possibly, nxti=i). The robot breaks only if both (1−j,nxti) and (j,nxti) are dirty.

I think there is a typo. break condition should be (1-j,nxti) and (j,nxti + 1)

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

In D, why does this greedy solution starting from the root and cutting whenever the depth exceeds the candidate does not work? TIA

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

    Consider the following input

    Input:

    1
    7 1
    1 1 3 2 5 5
    

    Output:

    2
    

    If you cut the tree whenever depth exceeds 2, you will require 2 operations, while the min. operations to make depth 2 is actually 1. Just make the tree and see why this happening :)

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

      is there any way to prove that you get the smallest number of edges if you start from bottom instead of top?

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

Why are the constraints so low for C?
I wrote a $$$O(n)$$$ solution which should easily work for $$$\Sigma n \geq 10^6$$$

The solution

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

Someone please help with my solution to problem E:

https://mirror.codeforces.com/contest/1739/submission/174503555

idea: dp[i][j][k] ; 0<=i<=1, 0<=j<=n-1, 0<=k<=2

dp[i][j][0] = num cells to clean manually in [0-1][j..n-1] rectangle if we are currently at clean (i,j)

dp[i][j][1] = num cells to clean manually in [0-1][j..n-1] rectangle if we are currently at clean (i,j), and cell (1-i,j) is already clean

dp[i][j][2] = num cells to clean manually in [0-1][j..n-1] rectangle if we are currently at clean (i,j), and cells (1-i,j) and (1-i,j+1) are already clean

I store the index of next clean cell in row i in k00,k01,k02; and of row 1-i in k10,k11,k12

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

For problem E:

" When does the robot break? Let the robot currently be in the cell $$$(j,i)$$$ (0-indexed) and the next column with a dirty cell be $$$nxt_i$$$ (possibly, $$$nxt_i=i$$$). The robot breaks only if both $$$(1−j,nxt_i)$$$ and $$$(j,nxt_i)$$$ are dirty "

Shouldn't it break when $$$(1-j,nxt_i)$$$ and $$$(j,nxt_i+1 )$$$ are both dirty, and $$$( j,nxt_i )$$$ is clean ?

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

BledDest!
Aho-Corasick is new algo for me and and read about this in cp-algorithms. They said if you need to find all strings from a given set in text, you need to use "exit links" to make code faster:

storing the nearest leaf vertex that is reachable using suffix links (this is sometimes called the exit link).
Link

As I see, you don't use this links or ncost array does this job?

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

    Yeah, ncost does the trick. Usually the exit links are helpful to traverse the whole path to the root along the suffix links without actually visiting non-terminal states of the Aho-Corasick (for example, this allows to find all occurrences of all strings we have to search for in $$$O(Ans)$$$); but in this problem, we are not interested in the actual occurrences themselves, only in their total cost, so precalculating it for each state is both easier and faster.

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

Can somebody explain problem E why it is not always optimal when the robot is at j-th row i-th column and $$$(1 - j, i)$$$ is dirty, $$$(j, i + 1)$$$ is clean, and we just always go to clean $$$(1 - j, i)$$$? I have been stuck by this for a long time but could not find any counter case :/

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

    See this case:

    8
    00100110
    10001101
    

    You can see that if you clean the cell in (1, 3) (1-indexed, (row, col)) you will avoid doing some forced cleaning twice near the end.

    If you are doing DP, probably you just need to add one more transition to take care of this.

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

why my code for problem D always gives WA ? any help please .

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

can anyone help me in D ?? 219602371