avatar-decorate
获赞
91
粉丝
14
关注
9
看过 TA
18
青城山养老院
2021
Java
IP属地:北京
JUST DO IT.
私信
关注
头像
2019-04-10 16:38
已编辑
百度_TPG_后端开发
#include <bits/stdc++.h>    using namespace std; const int inf = 0x3f3f3f3f; int n,m,a[22],dp[1<<20],val[1<<20]; char s[22]; int cal(int x)                 //将二进制字符串压缩成十进制数 {     int res = 0,b = 1;     for(int i = 0;i < m; ++i,b <<= 1) res += (s[i]=='1' ? b : 0);     retur...
咕咕咕_:拒绝长代码(雾 #include <bits/stdc++.h> using namespace std; int sqr(int x) {return x * x;} void chmin(int &x, int y) {if (x > y) x = y;} int dp[1 << 20], n, m, a[21], vis[1 << 20], S, ans; char s[25]; int main() {   cin >> n >> m;   for (int i = 0; i < n; ++i) {     cin >> s;     for (int j = 0; j < m; ++j) if (s[j] == '1') a[i] |= 1 << j;   }   for (int S = 0; S < (1 << n); ++S)      for (int i = 0; i < n; ++i) if (S & (1 << i)) vis[S] |= a[i];   memset(dp, 0x3f, sizeof dp);   dp[0] = 0;   for (int S = 0; S < (1 << n); ++S) {     for (int i = 0; i < n; ++i)        if (!(S & (1 << i))) chmin(dp[S | (1 << i)], dp[S] +             sqr(__builtin_popcount(vis[S | (1 << i)] ^ (vis[S | (1 << i)] & vis[S]))));   }   cout << dp[(1 << n) - 1];   return 0; }
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务