LightOJ 1011 - Marriage Ceremonies(状压DP)
来源:互联网 发布:单片机如何控制电机 编辑:程序博客网 时间:2024/05/25 21:35
题意:n男n女,第i男与第j女结合的权值为a[i][j],求最大权值和。
思路:状压dp。dp[i][s]记录前i个男生与状态数为s表示的i个女生结合的最大权值和。转移方程:dp[i][s|(1 << j)] = max(dp[i][s|(1 << j)], dp[i-1][s] + a[i][j])。
#include <algorithm>#include <iostream>#include <sstream>#include <cstring>#include <cstdio>#include <vector>#include <string>#include <queue>#include <stack>#include <cmath>#include <set>#include <map>using namespace std;typedef long long LL;#define mem(a, n) memset(a, n, sizeof(a))#define rep(i, n) for(int i = 0; i < (n); i ++)#define REP(i, t, n) for(int i = (t); i < (n); i ++)#define FOR(i, t, n) for(int i = (t); i <= (n); i ++)#define ALL(v) v.begin(), v.end()#define si(a) scanf("%d", &a)#define sii(a, b) scanf("%d%d", &a, &b)#define siii(a, b, c) scanf("%d%d%d", &a, &b, &c)#define pb push_back#define eps 1e-8const int inf = 0x3f3f3f3f, N = 17, MOD = 1e9 + 7;int T, cas = 0;int n, m;int a[N][N], dp[N][1 << N];int main(){#ifdef LOCAL freopen("/Users/apple/input.txt", "r", stdin);//freopen("/Users/apple/out.txt", "w", stdout);#endif si(T); while(T --) { si(n); for(int i = 0; i < n; i ++) for(int j = 0; j < n; j ++) si(a[i][j]); mem(dp, 0); for(int i = 0; i < n; i ++) dp[0][1 << i] = a[0][i]; int all = (1 << n) - 1; for(int i = 1; i < n; i ++) { for(int s = 0; s <= all; s ++) { if(!dp[i-1][s]) continue; for(int j = 0; j < n; j ++) { if(s & (1 << j)) continue; dp[i][s|(1 << j)] = max(dp[i][s|(1 << j)], dp[i-1][s] + a[i][j]); } } } printf("Case %d: %d\n", ++ cas, dp[n-1][all]); } return 0;}
0 0
- 【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 【状压dp or KM】
- lightoj 1011 - Marriage Ceremonies 详解(状压DP入门题)
- Lightoj 1011 Marriage Ceremonies(状压dp入门 or 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
- lightoj 1011 Marriage Ceremonies (状态压缩dp~)
- 南大软院大神养成计划——第三天
- CountDownTimer的使用以及解决Cancel无效的问题
- POJ-2406-kmp求最小循环节
- 三种同步FIFO的实现方法(verilog实现)
- 真机调试 与 响应者链
- LightOJ 1011 - Marriage Ceremonies(状压DP)
- 欢迎使用CSDN-markdown编辑器
- CentOS 6.5下利用Rsyslog+LogAnalyzer+MySQL部署日志服务器
- 移植libusb到mips-linux上(基于jz4780)
- 学习笔记(一)
- Service后记与拓展
- 查询重复的SQL语句
- 完美旅行APP
- Java面向对象编程学习