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

Автор apnakaamkar, история, 5 лет назад, По-английски

Could anyone please explain to me how to solve this dp problem? Link:https://atcoder.jp/contests/dp/tasks/dp_o Please help?

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

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

dp[i][mask] = Number of ways to match first i men with the set of women indicated by the mask, 0 <= i <= n, 0 <= mask <= 2^n. Obviuosly, if i != popcount(mask), dp[i][mask] = 0.

Fill the dp table by iterating over i and mask. When you fill dp[i][mask], you iterate over all possible pairing of i-th man with a woman. So the transition is dp[i][mask] = (sum of dp[i-1][mask ^ 1 << j] where j-th woman appeared in the mask). Code

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

    Oof I implemented the same method in recursive way and it got TLE

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

You can refer to explanation by FlowerOfSorrow(above comment) and this code — https://atcoder.jp/contests/dp/submissions/15835680