UVa 10911 Forming Quiz Teams [DP]
来源:互联网 发布:免费淘宝手机模板 编辑:程序博客网 时间:2024/05/23 11:57
Description
最优配对问题
2n个点,配成n组,使得距离和最短、
Algorithm
动态规划
O(n^2*2^n)方法
dp[s] 表示 已经配对了的集合为s的情况的最小距离和
每次枚举s,i,j
Code
O(n^2*2^n)方法
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <climits>using namespace std;int n;const int maxn = 20;struct Node { int x, y;};Node nodes[maxn];double d[maxn][maxn];double dp[1<<maxn];double dis(Node node1, Node node2) { return sqrt((node1.x - node2.x)*(node1.x - node2.x) + (node1.y - node2.y)*(node1.y - node2.y));}void solve() { memset(d, 0, sizeof(d)); memset(dp, 0, sizeof(dp)); n *= 2; int e = 1 << n; //全部集合 for (int i = 0; i < n; i++) { string string1; cin >> string1 >> nodes[i].x >> nodes[i].y; } for (int i = 0; i < n; i++) for (int j = i + 1; j < n; j++) { d[i][j] = dis(nodes[i], nodes[j]); } for (int i = 1; i < e; i++) { dp[i] = INT_MAX; } for (int s = 0; s < e; s++) { //全部集合 for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { int sij = (1 << i) | (1 << j); //i,j并集 if (!(s&sij)) { //i, j不在集合中 dp[s|sij] = min(dp[s|sij], dp[s] + d[i][j]); } } } } printf("%.2lf\n", dp[e-1]);}int main() { //freopen("input.txt", "r", stdin); for (int i = 1;;i++) { scanf("%d\n", &n); if (n == 0) break; printf("Case %d: ", i); solve(); }}
0 0
- Forming Quiz Teams - UVa 10911 状压dp
- UVa 10911 Forming Quiz Teams [DP]
- uva 10911 Forming Quiz Teams
- UVA 10911 Forming Quiz Teams
- uva 10911 Forming Quiz Teams
- UVa 10911 - Forming Quiz Teams
- UVA 10911 - Forming Quiz Teams
- UVA - 10911 Forming Quiz Teams
- UVA 10911 - Forming Quiz Teams
- uva 10911 - Forming Quiz Teams
- UVA - 10911 Forming Quiz Teams
- UVA - 10911 Forming Quiz Teams
- UVA 10911 Forming Quiz Teams
- uva 10911Forming Quiz Teams
- UVA 10911 Forming Quiz Teams(状态压缩DP)
- UVa 10911 - Forming Quiz Teams 状态压缩dp
- UVA 10911 Forming Quiz Teams(dp + 集合最优配对问题)
- UVa 10911 Forming Quiz Teams / 状态压缩DP
- 就写一个做尝试吧
- UTF8编码表
- 安卓学习笔记---Android点击空白区域,隐藏输入法软键盘
- Hibernate关联映射(5)
- Spring mvc 提交时间 String Date 的转换问题
- UVa 10911 Forming Quiz Teams [DP]
- 自定义toast 显示最新toast不累加时间
- iptables基础知识
- 过目不忘JS正则表达式
- July -- 程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结
- 剑指offer 10题 【位运算】二进制中1的个数
- 构建可靠的网络服务器之连接的建立和终止
- Win32获取屏幕可用尺寸/获取桌面可用区域 (即除去任务栏的区域)
- A Note on CMake - 3 Key words