青蛙的烦恼(frog) 原文:https://blog.csdn.net/xyc1719/article/details/79844952 
【题目描述】
池塘中有 n 片荷叶恰好围成了一个凸多边形,有一只小青蛙恰好站在 1 号荷叶上,小青蛙想通过
最短的路程遍历所有的荷叶(经过一个荷叶一次且仅一次),小青蛙可以从一片荷叶上跳到另外任意一
片荷叶上。
【输入格式】
第一行为整数 n,荷叶的数量。
接下来 n 行,每行两个实数,为 n 个多边形的顶点坐标,按照顺时针方向给出。保证不会爆 double。
【输出格式】
遍历所有荷叶最短路程,请保留 3 位小数。
【输入样例】
4
50.0 1.0
5.0 1.0
0.0 0.0
45.0 0.0
【输出样例】
50.211
【数据范围】
对于所有数据,0< n<=720

#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std; const int maxn=;
const int inf=0x3f3f3f3f; struct node
{
double a,b;
}nn[maxn]; double f[maxn][maxn][],dist[maxn][maxn]; double dis(node x,node y)
{
return sqrt((x.a-y.a)*(x.a-y.a)+(x.b-y.b)*(x.b-y.b));
} double recu(int i,int j,int k)
{
if(i==j) return 0.0;
if(f[i][j][k]==-)
{
if(k==) f[i][j][]=min(recu(i+,j,)+dist[i][i+],recu(i+,j,)+dist[i][j]);
else if(k==) f[i][j][]=min(recu(i,j-,)+dist[j][j-],recu(i,j-,)+dist[i][j]);
}
return f[i][j][k];
} int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%lf%lf",&nn[i].a,&nn[i].b);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
dist[i][j]=dist[j][i]=dis(nn[i],nn[j]);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
for(int k=;k<=;k++)
f[i][j][k]=-;
recu(,n,);
printf("%.3lf",f[][n][]);
return ;
}

【动态规划dp】青蛙的烦恼的更多相关文章

  1. 区间DP 青蛙的烦恼

    池塘中有n片荷叶恰好围成了一个凸多边形,有一只小青蛙恰好站在1号荷叶上,小青蛙想通过最短的路程遍历所有的荷叶(经过一个荷叶一次且仅一次),小青蛙可以从一片荷叶上跳到另外任意一片荷叶上. 输入数据(fr ...

  2. 动态规划dp

    一.概念:动态规划dp:是一种分阶段求解决策问题的数学思想. 总结起来就一句话:大事化小,小事化了 二.例子 1.走台阶问题 F(10):10级台阶的走法数量 所以:F(10)=F(9)+F(8) F ...

  3. 算法-动态规划DP小记

    算法-动态规划DP小记 动态规划算法是一种比较灵活的算法,针对具体的问题要具体分析,其宗旨就是要找出要解决问题的状态,然后逆向转化为求解子问题,最终回到已知的初始态,然后再顺序累计各个子问题的解从而得 ...

  4. 青蛙的烦恼(dp好题)

    有n片荷叶正好在一凸多边形顶点上 有一只小青蛙恰好站在1号荷叶的点 小青蛙可以从一片荷叶上跳到另外任意一片荷叶上 给出N个点的坐标N<800 求小青蛙想通过最短的路程遍历所有的荷叶一次且仅一次的 ...

  5. 【LSGDOJ 1852】青蛙的烦恼 DP

    题目描述 池塘中有n片荷叶恰好围成了一个凸多边形,有一只小青蛙恰好站在1号荷叶上,小青蛙想通过最短的路程遍历所有的荷叶(经过一个荷叶一次且仅一次),小青蛙可以从一片荷叶上跳到另外任意一片荷叶上. 输入 ...

  6. 【转】动态规划DP

    [数据结构与算法] DP 动态规划 介绍 原创 2017年02月13日 00:42:51 最近在看算法导论. DP全称是dynamic programming,这里programming不是编程,是一 ...

  7. 动态规划DP的优化

    写一写要讲什么免得忘记了.DP的优化. 大概围绕着"是什么","有什么用","怎么用"三个方面讲. 主要是<算法竞赛入门经典>里 ...

  8. hdu 1421:搬寝室(动态规划 DP + 排序)

    搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  9. hdu 2059:龟兔赛跑(动态规划 DP)

    龟兔赛跑 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

随机推荐

  1. UDP单播,广播,多播

  2. Linux 一 些常用的命令

    查看当前系统JAVA的安装路径: echo $JAVA_HOME: 查看内核版本: uname -a ubuntu的防火墙 关闭:ufw disable开启:ufw enable 卸载了 iptabl ...

  3. cmake find_package 命令

    1. find_package(<Name>)命令首先会在模块路径中寻找 Find<name>.cmake,这是查找库的一个典型方式. 具体查找路径依次为CMake:  变量$ ...

  4. liblensfun 在 mingw 上编译时遇到的奇怪问题

    ffmpeg 2018.07.15 增加 lensfun 滤镜; 这个滤镜需要 liblensfun 库; Website: http://lensfun.sourceforge.net/ Sourc ...

  5. 从GitHub下载demo时遇到的依赖问题

    从GitHub上使用download zip下载时,经常遇到一些依赖工程没有一起下载,如果额外手动下载,配置起来也相当费事,其实,标准的方法是使用以下命令下载这样的demo. git clone -- ...

  6. mysql group by 过滤字段 只能在SELECT 后面出现,不能写其他字段 报错解决 关键字 sql_mode=only_full_group_by

    1:报错  关键字 sql_mode=only_full_group_bymysql> select uuid,ip,count(*) from dbname_report.t_client_i ...

  7. Redis哈希表总结

    本文及后续文章,Redis版本均是v3.2.8 在文章<Redis 数据结构之dict><Redis 数据结构之dict(2)>中,从代码层面做了简单理解.总感觉思路的不够条理 ...

  8. elasticsearch单机部署多个节点

    cp -r elasticsearch-2.4.4 elasticsearch-2.4.4-2 mv elasticsearch-2.4.4 elasticsearch-2.4.4-1 总共cp了三个 ...

  9. hdu5707-Combine String(DP)

    Problem Description Given three strings a, b and c , your mission is to check whether c is the combi ...

  10. Linux内核原理与分析-第一周作业

    本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...