青蛙的烦恼(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. 基于89C51/52单片机的红外线遥控驱动

    目录 说明 IR.h IR.c 说明 编码格式:NEC IR.h /************************************************************ * @Pr ...

  2. Centos 05 系统目录讲解

    本节内容 1.linux目录结构 2.主目录功能简介 3.重要子目录 linux目录结构 在linux里面,逻辑上所有目录只有一个顶点,根是所有目录的起点. 根下面是类似一个倒挂的树一样的层次结构 可 ...

  3. DDoS的类型及原理

    1.DDoS攻击: DDOS(Distributed Denial of Service),又称分布式拒绝服务攻击.骇客通过控制多个肉鸡或服务器组成的僵尸网络,对目标发送大量看似合法请求,从而占用大量 ...

  4. Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'

    Information:Gradle tasks [:app:assembleDebug]Error:Execution failed for task ':app:transformResource ...

  5. Xpath初了解

    如下一段html: <html> <body> <form id="loginForm"> <input name="usern ...

  6. 对OAuth协议的认识

    一. OAuth是什么 OAuth 是Open Authorization的简写.OAuth 协议为用户资源的授权提供了一个安全的.开放而又简易的标准. 通俗地说,就是当我们想把自己系统的某些功能暴露 ...

  7. 【原创】Linux基础之查看linux发行版以及内核版本

    redhat查看发行版 # cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 查看内核版本 # uname -aLinux $h ...

  8. RabbitMQ基础知识及Linux安装

    RabbitMQ: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现. AMQP协议: AMQP,即Advanced Message Qu ...

  9. [转]Windows 安装Kafka

    来源:https://www.cnblogs.com/liuyuhua/p/5329926.html https://www.cnblogs.com/xinlingyoulan/p/6054361.h ...

  10. 【转】傅盛:一家公司最大瓶颈就是CEO

    创业之路,一经踏上,即永无止境.当然,对于初创期的CEO而言,还是有一些方法论可循. 来源 | 盛盛GO(ID:fstalk) 文  | 傅盛 经常有创业者问我,如何当好创业公司CEO,或如何创业,我 ...