博客
关于我
【洛谷_P1433】吃奶酪
阅读量:290 次
发布时间: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/

你可能感兴趣的文章
fufu学前端之H5+Javascript
查看>>
对用户ID、组ID、附属组ID、有效、实际、设置用户、设置组ID等的理解
查看>>
协议分层
查看>>
初次使用 Supervisor 管理 Laravel 队列进程
查看>>
SQL case when写法
查看>>
Mybatis使用collection导致分页总数过多
查看>>
Maven学习笔记(五)-使用Nexus搭建Maven私服
查看>>
centos7 elasticsearch5.2.2安装kibana5.2.2
查看>>
centos7 elasticsearch5.2.2安装x-pack
查看>>
(六)多进程实现TCP服务端
查看>>
坚持阅读
查看>>
关于序列化和反序列化
查看>>
vue路由变化马上知晓
查看>>
jquery写法的纠正
查看>>
公告栏横向滚动
查看>>
第四课:ES6的内置对象扩展(Set 数据结构:不重复数据)(2021/4/22)
查看>>
一、预编译(2021/4/23)
查看>>
四、js的深浅拷贝(2021/4/24)
查看>>
六、节流函数(2021/4/24)
查看>>
十四、数组扁平化处理(2021/4/27)
查看>>