题目描述

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

输入输出格式

输入格式:

第一行一个数n (n<=15)

接下来每行2个实数,表示第i块奶酪的坐标。

两点之间的距离公式=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))


输出格式:

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

输入输出样例

输入样例#1:

4
1 1
1 -1
-1 1
-1 -1
输出样例#1:

7.41
解题思路:
记忆化搜索,看代码(注释)
AC代码:
 #include<cstdio>
#include<cmath>
#define min(a,b) a<b?a:b
using namespace std;
int n;
double f[][];
double x[],y[],ans = 999999999999.0;//要求最小值,将答案初始化很大很大
bool v[];
void dfs(int s,int now,double l) {
if(l > ans) return ;//剪枝,如果没有会TLE,如果当前路径已经比答案大,那么不能是最优解了,直接返回
if(s == n) {//走完n个点
ans = min(ans,l);//更新答案
return ;
}
for(int i=;i<=n;i++) //枚举所有点
if(!v[i]) {//没走过
v[i]=; //标记
dfs(s+,i,l+f[now][i]);
v[i]=; //回溯
}
}
int main()
{
scanf("%d",&n);
for(int i = ;i <= n; i++)
scanf("%lf%lf",&x[i],&y[i]);
x[] = ;y[] = ;
for(int i = ;i <= n; i++)
for(int j = ;j <= n; j++)
f[i][j] = sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));//预处理两点的距离
dfs(,,0.0);//已走过0个点 上一个点是第0个点 已走了长0.0的路径
printf("%.2lf",ans);
return ;
}

 

洛谷 P1433 吃奶酪(记忆化)的更多相关文章

  1. 洛谷P1433 吃奶酪 题解 状态压缩DP

    题目链接:https://www.luogu.com.cn/problem/P1433 题目大意 房间里放着 \(n\) 块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 \((0, ...

  2. 洛谷 P1433 吃奶酪【DFS】+剪枝

    题目链接:https://www.luogu.org/problemnew/show/P1433 题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处 ...

  3. 集训作业 洛谷P1433 吃奶酪

    嗯?这题竟然是个绿题. 这个题真的不难,不要被他的难度吓到,我们只是不会计算2点之间的距离,他还给出了公式,这个就有点…… 我们直接套公式去求出需要的值,然后普通的搜索就可以了. 这个题我用的深搜,因 ...

  4. 洛谷 P1433 吃奶酪 Label:dfs && 剪枝Ex

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  5. 洛谷P1433 吃奶酪【dfs】【剪枝】

    题目:https://www.luogu.org/problemnew/show/P1433 题意: 给定n个坐标,要求从(0,0)开始走遍所有点,最少经过的路程. 思路: 刚开始想像数字三角形一样适 ...

  6. 洛谷 P1433 吃奶酪

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  7. 洛谷 - P1433 - 吃奶酪 - dfs

    https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs. 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常 ...

  8. 洛谷 P1433 吃奶酪 状压DP

    题目描述 分析 比较简单的状压DP 我们设\(f[i][j]\)为当前的状态为\(i\)且当前所在的位置为\(j\)时走过的最小距离 因为老鼠的坐标为\((0,0)\),所以我们要预处理出\(f[1& ...

  9. 洛谷P1433 吃奶酪

    #include<iostream> #include<math.h> using namespace std ; ; int n; bool st[N]; double x[ ...

随机推荐

  1. Codeforces Round #354 (Div. 2)-C. Vasya and String,区间dp问题,好几次cf都有这种题,看来的好好学学;

    C. Vasya and String time limit per test 1 second memory limit per test 256 megabytes input standard ...

  2. [luoguP1272] 重建道路

    传送门 奇奇怪怪的分组背包. #include <cstdio> #include <cstring> #include <iostream> #define N ...

  3. 使用SAX方式解析XML文件

    package com.pingyijinren.test; import android.util.Log; import org.xml.sax.Attributes; import org.xm ...

  4. web文件管理系统和日志实时监控工具

    https://blog.csdn.net/xuesong123/article/details/52752384

  5. ubuntu忘记root密码的解决办法

    ubuntu忘记密码,不需要重装系统即可重新设置root密码,以下是步骤: 1)在系统一启动时,按ESC键,目的是为了出现选单页面 2) 当看到选单页面时,此时按下[e] 这个键,此时会进入grub ...

  6. SecureCRT在Tab下的Title显示IP

    注意:要针对每个Session进行修改才行. 参考: http://www.cnblogs.com/tyhmj/archive/2013/12/20/3483247.html

  7. Mycat集群方案收集(待实践)

    先收集,后续再实践. 我想,市面上开源方案中,涉及到高可用和负载均衡的部署,无论是哪一个产品应用,都基本离不开LVS+Keepalived+HAProxy+Nginx等等. 下面是收集的教程: htt ...

  8. UVA10081-Tight Words(递推)

    题目链接 题意:给出一个0到k的序列,要求出有每相邻的两个数之间的差不差过1的子序列的概率. 思路:递推.dp[i][j]表示长度为i而且j结尾的子序列的个数. 注意.假设用符合子序列个数除以从个数. ...

  9. MySQL中文參考手冊

    非常好的中文手冊: 链接:http://www.sdau.edu.cn/support/mysq_doc/manual_toc.html

  10. 在弱网传输的情况下,是怎么做到节约流量的(面试小问题,Android篇)

    立即毕业了,在毕业之际.我辞掉了曾经的实习工作,主要是工作内容不太感兴趣.近期在找工作.主要是找Java和Android方面的工作.自以为学得不错.可是面试屡屡受挫. 先提一下问到的一些问题吧. 第一 ...