题目链接:P1433 吃奶酪

我感觉可以改成:【模板】TSP问题(商旅问题) 了。

爆搜\(T\)一个点,考虑状压\(dp\)(还是爆搜)。

我们用\(dp[i][j]\)表示现在是\(i\)状态,站在了\(j\)点。

那什么是状态呢? 我们用一个\(01\)串表示每一点有无被走过(\(0\)是没走过,\(1\)是已走过),那么转移方程就是:

\[dp[i][j]=min(dp[i][j],dp[i\&((1<<n)-1-(1<<(j-1)))][k]+dis[j][k])
\]

好好理解下,就是吃掉走过的每一点。

复杂度就是\(O(2^nn^2)\),对于\(n\leqslant15\)的数据,上界为\(7372800\),可以通过本题,还跑得挺快。

\(Code\):

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
struct node
{
double x,y;
}a[17];
int n;
double dp[65005][17];
double minn=21247483647;
double dis(node m,node n){return sqrt((m.x-n.x)*(m.x-n.x)+(m.y-n.y)*(m.y-n.y));}
int main()
{
scanf("%d",&n);
for(int i=1;i<=(1<<15);i++)
{
for(int j=1;j<=15;j++) dp[i][j]=214748364;
}
for(int i=1;i<=n;i++) scanf("%lf%lf",&a[i].x,&a[i].y);
for(int i=1;i<=n;i++) dp[1<<(i-1)][i]=0;//从零开始扫会RE
for(int i=1;i<=(1<<n)-1;i++)
{
for(int j=1;j<=n;j++)
{
if(!(1<<(j-1)&i)) continue;
for(int k=1;k<=n;k++)
{
if(j==k) continue;
if(!(1<<(k-1)&i)) continue;
dp[i][j]=min(dp[i][j],dp[i&((1<<n)-1-(1<<(j-1)))][k]+dis(a[j],a[k]));
}
}
}
node e;
e.x=e.y=0;
for(int i=1;i<=n;i++) minn=min(minn,dp[(1<<n)-1][i]+dis(a[i],e));
//注意这里把原点算上
printf("%.2lf\n",minn);
return 0;
}

转移方程有简单点的写法:

\[dp[i][j]=min(dp[i][j],dp[i-(1<<(j-1))][k]+dis[j][k])
\]

被骗了吧......

最新文章

  1. iOS 关于PCH文件(全局文件)的介绍
  2. python 进度条的编写
  3. Echarts 3.19 制作常用的图形 非静态
  4. tcp 之失败重传机制
  5. iOS 二维数组排序小算法
  6. java中throw和throws的区别
  7. mysql由浅入深探究(一)----数据库简介与mysql安装
  8. Cocos2d-x 2.x项目创建
  9. Linux之文件系统的简单操作
  10. IOPS
  11. Google地图数据算法
  12. 第01讲- Android背景知识
  13. RabbitMQ-从基础到实战(2)— 防止消息丢失
  14. 初探机器学习之使用百度AI服务实现图片识别与相似图片
  15. B. Nirvana Codeforces Round #549 (Div. 2) (递归dfs)
  16. centos6.5虚拟机安装后,没有iptables配置文件
  17. set集合综合案例
  18. manifest.json文件介绍
  19. java 程序运行的基础知识【Java bytecode】
  20. C#(.NET)面试题:做一个能自定义输入命令的表格程序

热门文章

  1. centos7下Maven Java selenium3环境搭建
  2. JS高级---利用原型共享数据
  3. EditPlus 注册码在线生成
  4. Hybrid App 开发快速指南
  5. [蓝桥杯2017初赛]青蛙跳杯子 BFS
  6. 学习笔记(26)- plato-端到端模型-定闹钟
  7. FFmpeg + php 视屏转换
  8. SQL按照某一列数据去重并显示整行信息
  9. socket实现简单的FTP
  10. PHP弱类型(一)