Advertisement
a_pramanik

LOJ 1011 bitmask dp

Apr 12th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. ///:-)
  2. #include <bits/stdc++.h>
  3. #define pb push_back
  4. #define ll long long int
  5. #define inf 2000000000
  6. #define infLL 9000000000000000000
  7. #define infULL 18446744073709551615
  8. #define Aktaruzzaman using
  9. #define dbg printf("Here\n");
  10. #define pi (2.0*acos(0.0))
  11. #define Pramanik namespace std;
  12. #define vsort(v) sort(v.begin(),v.end())
  13. #define ull unsigned long long int
  14. #define mem(a, b) memset(a, b, sizeof a)
  15. #define cf 100009
  16. #define MOD 1000000007
  17. #define pii pair<int, int>
  18.  
  19. //int dx[]={0,1,0,-1};
  20. //int dy[]={1,0,-1,0};
  21. //int dx[]={1,1,0,-1,-1,-1,0,1};
  22. //int dy[]={0,1,1,1,0,-1,-1,-1};
  23.  
  24. template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
  25. template< class T > inline T lcm(T a,T b) {a=abs(a);b=abs(b); return (a/gcd(a,b))*b;}
  26. template <class T> inline T is_prime(T a){if(a<2|a==4)return false;if(a==2||a==3||a==5)return true; T g=(T)sqrt(a)+1; for(T i=2; i<=g; i++){if(a%i==0)return false;}return false;}
  27. template <class T> inline T bigmod(T n,T p,T m){if(p==0)return 1; if(p%2)return ((n%m)*bigmod(n,p-1,m))%m; else {T c=bigmod(n,p/2,m);return ((c%m)*(c%m))%m;}}
  28.  
  29. Aktaruzzaman Pramanik
  30. ll vis[17][(1<<16)+5];
  31. ll a[17][17];
  32. ll n;
  33.  
  34. ll dp(ll pos, ll msk)
  35. {
  36. if(pos==n)return 0;
  37. if(vis[pos][msk]!=-1)return vis[pos][msk];
  38.  
  39. ll xx=0;
  40.  
  41. for(ll i=0; i<n; i++){
  42.  
  43. if((msk&(1<<i))==0){
  44. // dbg
  45. ll tmpMsk = msk;
  46. tmpMsk|=(1<<i);
  47. xx= max(xx, a[pos][i]+dp(pos+1, tmpMsk));
  48. }
  49. }
  50.  
  51. return vis[pos][msk]=xx;
  52.  
  53. }
  54.  
  55. int main()
  56.  
  57. {
  58. ios_base:: sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL);
  59. ll t, i, j, k, x, y;
  60.  
  61. cin>>t;
  62. ll cc=0;
  63.  
  64. while(t--){
  65. cin>>n;
  66. for(i=0; i<n; i++){
  67. for(j=0; j<n; j++){
  68. cin>>a[i][j];
  69. }
  70. }
  71. mem(vis, -1);
  72. printf("Case %lld: %lld\n", ++cc, dp(0, 0));
  73.  
  74. }
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement