博客
关于我
【洛谷_P1433】吃奶酪
阅读量:279 次
发布时间:2019-03-03

本文共 825 字,大约阅读时间需要 2 分钟。

吃奶酪


题目描述

房间里放着 n 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0) 点处。

输入格式

第一行有一个整数,表示奶酪的数量 n。

第 2 到第 (n + 1) 行,每行两个实数,第 (i + 1) 行的实数分别表示第 i 块奶酪的横纵坐标 x_i, y_i

输出格式

输出一行一个实数,表示要跑的最少距离,保留 2 位小数。

输入输出样例

输入 #1

41 11 -1-1 1-1 -1

输出 #1

7.41

解题思路

这道题,我们分析数据:1<=n<=15。所以 《 很 显 然 》,这道题是用状压DP,动转移方程如下

f [ i ] [ k ] = m i n ( f [ i ] [ k ] , f [ j ] [ k − ( 1 < < i − 1 ) ] + h h ( i , j ) ) f[i][k]=min(f[i][k],f[j][k-(1<<i-1)]+hh(i,j)) f[i][k]=min(f[i][k],f[j][k(1<<i1)]+hh(i,j))
然后进行几个特判,赋个初值,就差不多了

#include
#include
#include
using namespace std;int n; double x[20],y[20];double f[30][1<<15],ans=0x3f3f3f3f;double hh(int i,int j){ return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));}int main(){ cin>>n; for(int i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]); for(int i=1;i<=n;i++) for(int j=1;j<(1<

转载地址:http://pghl.baihongyu.com/

你可能感兴趣的文章
R3 PRO 3200G和r7 3700u 哪个好
查看>>
i9 11900K和i7 11700K哪个好i711700K和i9 11900K性能差多少
查看>>
入手评测 联想小新Pro14和Air14Plus哪个好?区别对比
查看>>
程序人生:没有伞的孩子要学会奔跑
查看>>
Express Animate for mac(动画特效制作软件)
查看>>
Cookie for Mac(浏览器缓存清理软件)
查看>>
macOS Big Sur系统中如何开启设置触控板三指拖拽功能?
查看>>
Resize Sense for Mac(图像处理软件)
查看>>
TG Pro for mac(硬件温度检测工具)
查看>>
SyncTime for mac(简单的文件同步工具)
查看>>
如何在Mac上关闭Siri?
查看>>
修复苹果Mac中的快速视频播放错误的方法
查看>>
MAC电脑Command键调换为Control键的方法
查看>>
苹果HomePod智能音箱怎么使用广播功能?
查看>>
Mac系统投屏到电视机的方法
查看>>
【Docker&ARM】ARM架构服务器上docker的安装
查看>>
【Tinyproxy】CentOS7.X http代理tinyproxy的安装配置与使用
查看>>
【python3】CentOS7.x上Python3.8.3的编译安装
查看>>
python insert插入mysql 中文字符报错 及mysql编码介绍
查看>>
php-foreach遍历一维数组
查看>>