_rashed

UVA 10651

Jul 4th, 2022 (edited)
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #define ll long long
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. const int OO = 1e9;
  6. const double EPS = 1e-9;
  7.  
  8.  
  9. int mem[(1 << 13)];
  10.  
  11. int solve(bitset<12> msk) {
  12.     if(msk.count() == 0) {
  13.         return 0;
  14.     }
  15.     if(mem[msk.to_ullong()] != -1) {
  16.         return mem[msk.to_ullong()];
  17.     }
  18.     int &ret = mem[msk.to_ullong()];
  19.     ret = msk.count();
  20.     for(int i = 0; i < 10; i++) {
  21.         if(!msk[i] && msk[i+1] && msk[i+2]) {
  22.             bitset<12> curr = msk;
  23.             curr[i] = 1;
  24.             curr[i+1] = curr[i+2] = 0;
  25.             ret = min(ret,solve(curr));
  26.         }
  27.         else if(msk[i] && msk[i+1] && !msk[i+2]) {
  28.             bitset<12> curr = msk;
  29.             curr[i+2] = 1;
  30.             curr[i] = curr[i+1] = 0;
  31.             ret = min(ret,solve(curr));
  32.         }
  33.     }
  34.     return ret;
  35. }
  36.  
  37. int main()
  38. {
  39.     ios_base::sync_with_stdio(false);
  40.     cin.tie(NULL);
  41.     cout.tie(NULL);
  42.     int t;
  43.     cin >> t;
  44.     while(t--) {
  45.         memset(mem,-1,sizeof(mem));
  46.         bitset<12> msk;
  47.         for(int i = 0; i < 12; i++) {
  48.             char c;
  49.             cin >> c;
  50.             msk[i] = (c == 'o');
  51.         }
  52.         cout << solve(msk) << "\n";
  53.     }
  54.  
  55.     return 0;
  56. }
  57.  
Add Comment
Please, Sign In to add comment