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

Автор jayantjha1109, история, 4 года назад, По-английски

I am trying the CSES problem set. I am getting WA on a few tests in Two Sets — II question. Here is the link for the question https://cses.fi/problemset/task/1093

My approach is to create a dp[i][j] which stores the number of ways to get sum i using first j indices. My target is to get sum n*(n-1)/4 . Formula I use is- dp[i][j]=dp[i][j-1]+dp[i-j][j-1];

I initialized dp[0][i] to 1 for all i<=n bcoz the only possible way is to select no indice at all. And also dp[i][0] to 0 for all 1<=i<=target bcoz its not possible to create a sum using no digits at all. I then print (dp[target][n])/2;

Please help. I am getting WA on few tests.

code-

https://mirror.codeforces.com/contest/1400/submission/91190026

The question is irrelevant in this link. Only the code is relevant

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

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

Auto comment: topic has been updated by jayantjha1109 (previous revision, new revision, compare).

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

Auto comment: topic has been updated by jayantjha1109 (previous revision, new revision, compare).

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

Auto comment: topic has been updated by jayantjha1109 (previous revision, new revision, compare).

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

Use inverse modulo under 2 instead of just dividing the number.

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

    Sorry for being silly but what is (inverse modulo under 2) supposed to mean?

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

      If you are dividing some number a by any other number by b and you need to take modulo also after or before the division operation like ans = (a / b ) % MOD. Then you cannot do this directly, you have to calculate the inverse modulo of b under MOD then do this:

      ans = a % MOD * (inv(b)) % MOD.

      To calculate you can use fermate little theorem if MOD is prime: inv(b) = bᴹᴼᴰ⁻² % MOD. Now you are done, you can find inv(b) efficiently by power expo.