poj 2253——Frogger
这个题一开始不知道咋做,但是大致有点意思。后来还是借鉴了题解发现可以用dijkstra,不太理解。但是在最后自己推的时候突然理解了。
dijkstra应该也算是动态规划。我们用dis[i]数组作为青蛙跳到第i个石头时途经的最大跳跃距离。借鉴dijkstra的思路,先找最小的dis[i].然后i作为中间点修改dis[j],
1<=j<=n;并且U[i]==0;那么对于修改的时候对于点j如果dis[j]>max(dis[i],arcs[i][j]),那么肯定有修改的必要,新的dis[i]=max(dis[i],arcs[i][j])。至于为什么可以这样呢,其实是和dijkstra的证明类似的,但是这里有一个简单的思路。因为我们一开始对于每个点就有最初的dis[j],当我们可以借助中间点逐渐优化的时候,那么dis[j]肯定是越来越优化的,直到结束。其实这样想有点像floyd。动态规划真的是神奇啊!
Ps:今天历经坎坷,终于组队了。虽然水平都不高,但是距离区域赛还有6个月!we can make it!
#include <iostream>
#include <cstring>
#include <string>
#include <map>
#include <set>
#include <algorithm>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <stack>
#include <queue>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
const double Pi=3.14159265358979323846;
typedef long long ll;
const int MAXN=+;
const int dx[]={,,,-};
const int dy[]={,-,,};
const int INF = 0x3f3f3f3f;
const int NINF = 0xc0c0c0c0;
const ll mod=1e9+;
struct graph
{
double weight;
double arcs[MAXN][MAXN];
}G;
struct node{
int a,b;
}p[MAXN];
double dis[MAXN];
//v是起点,n是一共的点的个数
//dis[i]记录的是从七点到i,所有路径中的最小单步值
void dijkstra(int v,int n)
{
int U[MAXN];
for(int i=;i<=n;i++) U[i]=;
for(int i=;i<=n;i++) dis[i]=INF; dis[v]=; for(int i=;i<=n;i++)
{
double minn=INF;int k=-;
/*for(int j=1;j<=n;j++)
{
cout <<dis[j]<<" ";
}
cout <<endl<<"**********"<<endl;*/
for(int i=;i<=n;i++)
{
if(minn>dis[i]&&U[i]==)
{
minn=dis[i];
k=i;
}
}
U[k]=; for(int i=;i<=n;i++)
{
if(U[i]==&&dis[i]>max(G.arcs[i][k],dis[k]))
{
dis[i]=max(G.arcs[i][k],dis[k]);
}
}
}
}
int main()
{
int n;int cnt=;
while(scanf("%d",&n)&&n)
{
for(int i=;i<=n;i++)
{
scanf("%d%d",&p[i].a,&p[i].b);
}
for(int i=;i<n;i++)
{
for(int j=i+;j<=n;j++)
{
G.arcs[i][j]=sqrt((p[i].a-p[j].a)*(p[i].a-p[j].a)+(p[i].b-p[j].b)*(p[i].b-p[j].b));
G.arcs[j][i]=G.arcs[i][j];
}
}
dijkstra(,n);
printf("Scenario #%d\n",cnt++);
printf("Frog Distance = %.3f\n\n",dis[]);
}
return ;
}
poj 2253——Frogger的更多相关文章
- 最短路(Floyd_Warshall) POJ 2253 Frogger
题目传送门 /* 最短路:Floyd算法模板题 */ #include <cstdio> #include <iostream> #include <algorithm& ...
- POJ 2253 Frogger ,poj3660Cow Contest(判断绝对顺序)(最短路,floyed)
POJ 2253 Frogger题目意思就是求所有路径中最大路径中的最小值. #include<iostream> #include<cstdio> #include<s ...
- POJ. 2253 Frogger (Dijkstra )
POJ. 2253 Frogger (Dijkstra ) 题意分析 首先给出n个点的坐标,其中第一个点的坐标为青蛙1的坐标,第二个点的坐标为青蛙2的坐标.给出的n个点,两两双向互通,求出由1到2可行 ...
- POJ 2253 Frogger(dijkstra 最短路
POJ 2253 Frogger Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fion ...
- POJ 2253 Frogger
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- poj 2253 Frogger 最小瓶颈路(变形的最小生成树 prim算法解决(需要很好的理解prim))
传送门: http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- poj 2253 Frogger (dijkstra最短路)
题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- POJ 2253 ——Frogger——————【最短路、Dijkstra、最长边最小化】
Frogger Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- POJ 2253 Frogger Floyd
原题链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...
- poj 2253 Frogger (最长路中的最短路)
链接:poj 2253 题意:给出青蛙A,B和若干石头的坐标,现青蛙A想到青蛙B那,A可通过随意石头到达B, 问从A到B多条路径中的最长边中的最短距离 分析:这题是最短路的变形,曾经求的是路径总长的最 ...
随机推荐
- angular 常用插件集合
md5加密 https://www.npmjs.com/package/md5-typescript angular echarts https://github.com/xieziyu/ng ...
- koa学习
http://www.ruanyifeng.com/blog/2017/08/koa.html
- kiss word memory post poly peri out ~p 4
1● post p əust 在后面,邮件 2● peri 多 3● poly 周围,靠近
- 逆袭之旅DAY16.东软实训.Oracle.索引
2018-07-12 14:44:27 四.索引1.创建索引手动创建:create index 索引名 on 表名(列名,[列名,...])create table employee(pno numb ...
- laravel 连表查询数据库
$this->model ->select($field) ->leftJoin('b', 'b.cid', '=', 'a.id') ->orderBy("a.ad ...
- U启动安装原版Win7系统教程
1.制作u启动u盘启动盘2.下载原版win7系统镜像并存入u盘启动盘3.硬盘模式更改为ahci模式 第一步: 将准备好的u启动u盘启动盘插在电脑usb接口上,然后重启电脑,在出现开机画面时通过u盘启动 ...
- 从R-CNN到FAST-RCNN再到Faster R-CNN
(Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks) R-CNN: (1)输入测试图像: ...
- css选择器思维导图
- PCP架构设计
1.引言 现如今已经进入互联网时代,无论是工作还好娱乐都已经离不开互联网,与此同时,网络相关的问题也时不时的侵扰着我们,这需要我们具有一定网络相关知识来解决相关问题,而这时,一款工作便利,免费的网络分 ...
- dos命令:window10程序控制命令
一.A appwiz.cpl::程序和功能 二.C calc:启动计算器 certmgr.msc:证书管理实用程 charmap:启动字符映射表 chkdsk.exe:Chkdsk:磁盘检查(管理员身 ...