Advertisement
Guest User

Untitled

a guest
Jan 20th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1.     if (grid[0] == 0) {
  2.         dp[0][0] = 1;
  3.         dp[0][3] = 1;
  4.     } else {
  5.         dp[0][grid[0]] = 1;
  6.     }
  7.     for (int i = 1; i < n; i++) {
  8.         for (int m = 0; m < 4; m++) {
  9.             if ((m | grid[i]) != m) {
  10.                 continue;
  11.             }
  12.             if (m == 0) {
  13.                 dp[i][0] = dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3];
  14.                 dp[i][0] %= mod;
  15.             } else if (m == 1) {
  16.                 if (get_bit(grid[i], 0)) {
  17.                     dp[i][1] = dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3];
  18.                     dp[i][1] %= mod;
  19.                 } else {
  20.                     dp[i][1] = dp[i - 1][0] + dp[i - 1][2];
  21.                     dp[i][1] %= mod;
  22.                 }
  23.             } else if (m == 2) {
  24.                 if (get_bit(grid[i], 1)) {
  25.                     dp[i][2] = dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3];
  26.                     dp[i][2] %= mod;
  27.                 } else {
  28.                     dp[i][2] = dp[i - 1][0] + dp[i - 1][1];
  29.                     dp[i][2] %= mod;
  30.                 }
  31.             } else {
  32.                 if (get_bit(grid[i], 0) + get_bit(grid[i], 1) == 0) {
  33.                     dp[i][3] = dp[i - 1][0] * 2 + dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3];
  34.                     dp[i][3] %= mod;
  35.                 } else if (get_bit(grid[i], 0) == 0 && get_bit(grid[i], 1) == 1) {
  36.                     dp[i][3] = dp[i - 1][0] + dp[i - 1][2];
  37.                     dp[i][3] %= mod;
  38.                 } else if (get_bit(grid[i], 0) == 1 && get_bit(grid[i], 1) == 0) {
  39.                     dp[i][3] = dp[i - 1][0] + dp[i - 1][1];
  40.                     dp[i][3] %= mod;
  41.                 } else {
  42.                     dp[i][3] = dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3];
  43.                     dp[i][3] %= mod;
  44.                 }
  45.             }
  46.         }
  47.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement