Lightoj 1011 Marriage Ceremonies(状压dp入门 or km板子)
来源:互联网 发布:ubuntu中怎么安装qq 编辑:程序博客网 时间:2024/05/19 06:47
题意:给你n*n的矩阵,a[i][j]代表第i个男人和第j个女人之间的满意度,求男女一一配对后,最大的满意度之和。(n<=16)
思路:可以直接套KM板子,n^3复杂度,因为n比较小,也可以用状压做,n^2*2^n复杂度
转移方程:dp[i][sta|(1<<j)] = max(dp[i][sta|(1<<j)], dp[i-1][sta]+a[i][j])
代码:
#include<bits/stdc++.h>using namespace std;const int maxn = 17;int dp[maxn][1<<maxn], a[maxn][maxn];int main(void){ int t, n, ca = 1; cin >> t; while(t--) { scanf("%d", &n); memset(dp, 0, sizeof(dp)); for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d", &a[i][j]), dp[i][1<<j] = a[i][j]; for(int i = 1; i < n; i++) for(int j = 0; j < (1<<n); j++) { if(dp[i-1][j]) { for(int k = 0; k < n; k++) { if(!(j & (1<<k))) { dp[i][j|(1<<k)] = max(dp[i][j|(1<<k)], dp[i-1][j]+a[i][k]); } } } } printf("Case %d: %d\n", ca++, dp[n-1][(1<<n)-1]); } return 0;}
阅读全文
1 0
- Lightoj 1011 Marriage Ceremonies(状压dp入门 or km板子)
- lightoj 1011 - Marriage Ceremonies 【状压dp or KM】
- lightoj 1011 - Marriage Ceremonies 详解(状压DP入门题)
- 【DP】 LightOJ 1011 - Marriage Ceremonies状压
- LightOJ 1011 Marriage Ceremonies【状压DP】
- LightOJ 1011 - Marriage Ceremonies (状压dp)
- LightOJ - 1011 Marriage Ceremonies(状压DP)
- LightOJ 1011 - Marriage Ceremonies(状压DP)
- lightoj 1011 Marriage Ceremonies (状压dp)
- LightOJ 1011 - Marriage Ceremonies (dp)
- lightoj 1011 Marriage Ceremonies (KM模板题)
- LightOJ 1011 - Marriage Ceremonies(dp)
- lightoj 1011 - Marriage Ceremonies(状态压缩dp)
- LightOJ-1011-Marriage Ceremonies [状态压缩][DP]
- lightoj 1011 Marriage Ceremonies
- LightOJ 1011 - Marriage Ceremonies
- LightOJ 1011 Marriage Ceremonies
- LightOJ 1011 Marriage Ceremonies
- cms内置tomcat版
- eclipse下如何修改字体大小?
- MOOC清华《程序设计基础》第6章:分鱼问题(从E到A递推)
- SOCKET与 线程 完成聊天室 (服务端)
- 产品新人工作中必知的三个步骤
- Lightoj 1011 Marriage Ceremonies(状压dp入门 or km板子)
- C++编译报错: undefined reference to clock_gettime
- 初学msp430
- 学习AD10心得
- python 对比两个list的值
- Android Wi-Fi subsystem_ramdump简介(以QCOM为Base)
- 送给不知如何保护眼睛的程序猿
- Android Butterknife 框架源码解析(3)——Butterknife 8.7.0源码分析
- MySQL5.7.19安装过程及问题(windows7 ,64)