UVA - 10911 Forming Quiz Teams
来源:互联网 发布:天士博电子白板软件 编辑:程序博客网 时间:2024/05/11 12:04
简单记忆化搜索,用二进制位表示组队情况
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>#define MAX 8#define INF 10000000using namespace std;int n,vis[1<<(2*MAX)],cases=1;char name[MAX*2][25];double x[MAX*2],y[MAX*2];double dp[1<<(2*MAX)];void init(){memset(vis,0,sizeof(vis));for(int i=0;i<(1<<(2*MAX));i++)dp[i]=INF;dp[(1<<(2*n))-1]=0.0;}double dist(int i,int j){return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));}void dfs(int team,int state){if(vis[state]==1)return ;vis[state]=1;if(team==n)return ;for(int i=0;i<n*2;i++){if(state&(1<<i))continue;for(int j=i+1;j<n*2;j++){if(state&(1<<j))continue;dfs(team+1,state+(1<<i)+(1<<j));dp[state]=min(dp[state],dp[state+(1<<i)+(1<<j)]+dist(i,j));}}}int main(){while(~scanf("%d",&n)&&n){for(int i=0;i<2*n;i++){scanf("%s %lf %lf",name[i],&x[i],&y[i]);}init();dfs(0,0);printf("Case %d: %.2lf\n",cases++,dp[0]);}return 0;}
0 0
- 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(状态压缩)
- UVA-10911 - Forming Quiz Teams(状态压缩)
- Forming Quiz Teams - UVa 10911 状压dp
- UVA - 10911 Forming Quiz Teams 状态压缩
- UVa 10911 Forming Quiz Teams(dfs)
- UVa 10911 Forming Quiz Teams [DP]
- 第八周(运算符重载)
- 0428
- UVa 10051 - Tower of Cubes
- 矩阵模板
- 第九章 顺序容器
- UVA - 10911 Forming Quiz Teams
- 【codeforces #300】EF题解
- centos_7.0 1503 配置笔记(四)--配置nginx.service
- 浅谈设计模式之五——Adapter模式
- spark原理介绍
- UVA - 656 Optimal Programs 暴力
- BZOJ 1001: [BeiJing2006]狼抓兔子 对偶图
- android开发步步为营之57:UncaughtExceptionHandler未捕获的异常处理器
- 李彦宏证监会演讲