链接:点击打开链接

描述:最多只有15个点,寻找一条路径将所有的点连起来,路径最短

思路:将所有点状压一下,每次加入一个点只需要考虑一条路径的两个端点,但是9......1,1......9这两种情况其实是一样的,我们可以只考虑向9......1,1......9后面添加节点的情况,这样用一个[15][1<<15]的二维数组记录以一个点开始的所有相关状态

从0开始扫,每次dp的时候,扫到一个数例如10110(只讨论5个点的情况),那么踏上一个阶段的相关情况10100,10010,00110,一定已经被讨论过了,所有是正确的

#include <stdio.h>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <math.h>using namespace std;
typedef long long ll;
const int maxn = 35000;
const double INF = 1e8+500;
int N;
int arr[20]; int cnt;
struct node
{double x,y;node() {}node(double _x, double _y): x(_x), y(_y) {}
};
node ss[20];
double dp[maxn][15];
int lowbit(int i) { return i&-i; }
int wei(int j)
{int i=0;while(j) j-=lowbit(j), i++;return i;
}double dis(node a,node b)
{return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
void init()
{for(int i=(1<<N);i>=0;i--) for(int k=0;k<N;k++) dp[i][k]=INF;
}
int main()
{
//  freopen("test0.in","r",stdin);int T; cin>>T;while(T--){cin>>N;init();for(int i=0;i<N;i++){   double a, b;scanf("%lf%lf", &a, &b);ss[i]=node(a,b);dp[1<<i][i]=0;}// dp[1<<i][i]=0;for(int i=1;i<(1<<N);i++){for(int j=0;j<N;j++){if((i&(1<<j))){for(int k=0;k<N;k++) if(!(i&(1<<k))){   int kk=(i|(1<<k));dp[kk][k]=min(dp[kk][k],dp[i][j]+dis(ss[j],ss[k]));}}}}double mm=INF;for(int i=0;i<N;i++) mm=min(mm, dp[(1<<N)-1][i]);printf("%.2lf\n",mm);}return 0;
}

neu1482 2014辽宁省赛Picking Cabbage(状态压缩)相关推荐

  1. hdu5094(上海邀请赛E) 状态压缩bfs:取钥匙开门到目的地

    貌似和前段时间的一场网络赛一个类型,状态压缩判断走没走过,然后裸bfs到终点. 其实这类题目很简单就是一个bfs模板,无非就是有一些坑,比如这一题..一个格子可以有多把钥匙汗== 1 #include ...

  2. LeetCode 1178. 猜字谜(状态压缩+枚举二进制子集+哈希)

    文章目录 1. 题目 2. 解题 1. 题目 外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧. 字谜的迷面 puzzle 按字符串形式给出,如果一个单词 word 符合下面两个条件, ...

  3. [ACM]辽宁省赛2010 (HZNU 1081-1089)

    虽然退役了,但偶尔水几题醒醒脑还是不错的=_= 1085 Intermediary 暂时还没做 1081: Dinner 时间限制: 1 Sec   内存限制: 32 MB 提交: 5   解决: 3 ...

  4. NOJ 1116 哈罗哈的大披萨 【淡蓝】 状态压缩DP

    哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte 总提交 : 99            测试通过 : 14 比赛描 ...

  5. 职教大赛正热华三通信实训室方案为辽宁省赛“加小灶”

    春暖花开,辽宁省职业院校技能大赛即将拉开帷幕.辽宁省教育厅.辽宁省职业院校技能大赛组委会特意邀请杭州华三通信技术有限公司(简称华三通信)进行高职组"计算机网络应用"赛项的赛前培训. ...

  6. pat 食物链(状态压缩求哈密顿回路)

    状态压缩求哈密顿回路 #include<bits/stdc++.h> using namespace std; bool dp[23][1<<21]; char s[22][2 ...

  7. POJ-1753 Flip Game 枚举 状态压缩

    刚开始做这题时总是在想应该用何种的策略来进行翻装,最后还是没有想出来--- 这题过的代码的思路是用在考虑到每个点被翻装的次数只有0次或者是1次,所以对于16个点就只有2^16中请况了.再运用位运算将状 ...

  8. 状压DP Hiho-1044 状态压缩

    状态压缩 [HihoCoder - 1044] 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市--那座城市即将举行美食节! 但是不幸的是,小 ...

  9. POJ-1185 炮兵阵地 动态规划+状态压缩

    由于递推的时候依赖于三个连续层的关系.一开始想着直接三重for循环,但是这里有个问题就是上一层的0位置上包括着上上层是0和1两种可能,而后者又对当前行有约束,因此该方法不行.当然有一个办法就是增加状态 ...

  10. 树上启动式合并问题 ---- D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths [状态压缩+树上启发式合并]

    题目链接 题目大意: 一棵根为1 的树,每条边上有一个字符(a−va−va−v共22种). 一条简单路径被称为Dokhtar−kosh当且仅当路径上的字符经过重新排序后可以变成一个回文串. 求每个子树 ...

最新文章

  1. linux系统中指定端口连接数限制
  2. Eclipse + Spring boot +mybatis + mysql(后续)
  3. 组合测试法是什么 软件测试,组合测试法中的全对偶测试法
  4. jsp指令元素与动作元素
  5. [转载] JAVA 堆栈 堆 方法区 静态区 final static 内存分配 详解
  6. Newtonsoft.Json.dll 使用
  7. netsh命令恢复网络_实例的状态检查和自动恢复
  8. 计算机工作应用工作简历,计算机应用专业工作简历范文
  9. 开机启动项_开机时出现“checking media presence”
  10. 解决用root用户及密码可以直接登陆某LINUX系统,但是用ssh登陆,系统却总是提示密码不对...
  11. Lytain:PCWin10纯净专业版重装与程序员的高效部署
  12. pyltp安装教程——保姆级
  13. 利用IMU进行激光点云运动畸变校正
  14. 智能水表自动抄表协议cjt188远传协议,支持地址自动分配检查,灵活好用、Mbus通讯测试工具是一款水表等设备的测试工具
  15. Python遥感影像SAR分割裁剪多张小影像
  16. 快讯:飞书玩家大会线上举行;微信支付推出“教培服务工具箱”
  17. dv路由算法c语言实现,路由协议之DV算法
  18. 修复openssl漏洞,升级openssl
  19. 神器BTrace快速入门
  20. 英特尔的驱动程序与Windows 10 V1903出现兼容问题

热门文章

  1. 三极管工作原理_通俗易懂的讲解三极管工作原理,新手小白记得收藏
  2. 无线网和网吧服务器,网吧网络使用无线局域网的几个优势所在
  3. 软件架构风格介绍和总结
  4. 医院计算机系统日常维护记录表,医院计算机信息管理系统的应用及维护
  5. Web端实现视频通话
  6. Eclipse从零开始搭建一个SpringBoot项目
  7. 最新最快的HTTP代理服务器,国内外HTTP代理服务器,游戏代理服务器,Q代理服务器,代理IP...
  8. C++_GUARDED_BY 和EXCLUDES属性字
  9. linux io page fault,Linux的page fault
  10. linux install 文件,linux命令安装msi文件