一、题目

 Frogger

二、分析

 题意关键点就是那个青蛙距离。就是所有1到2的点的路径中,每条路径都可以确定一个最大值,这个最大值就是青蛙要跳的青蛙距离,然后要求这个青蛙距离最小值。

 其实就是最短路的变形,用dijkstra,原先求最短路的时候是每次确定当前最小距离的点,那么,这题只需要每次确定一个当前最有值就可以了,易证,队列后面的值是不会有更小了的。

三、AC代码

 1 #include <cstdio>
2 #include <iostream>
3 #include <cmath>
4 #include <cstring>
5 #include <queue>
6 #include <fstream>
7 using namespace std;
8 #define INF 0x3f3f3f3f
9 typedef pair<double, int> P;
10 const int MAXN = 2e2 + 14;
11 struct point
12 {
13 int x, y;
14 }node[MAXN];
15 struct cmp
16 {
17 bool operator()(const P &a, const P &b)
18 {
19 return a.first > b.first;
20 }
21 };
22 int n;
23 double G[MAXN][MAXN];
24 double dist[MAXN];
25 bool flag[MAXN];
26
27 void Dijkstra(int s)
28 {
29 priority_queue<P, vector<P>, cmp> pq;
30 memset(dist, 0, sizeof(dist));
31 memset(flag, 0, sizeof(flag));
32 pq.push(P(0, 1));
33 while( !pq.empty() )
34 {
35 P t = pq.top();
36 pq.pop();
37 int v = t.second;
38 if(flag[v])
39 continue;
40 flag[v] = 1;
41 dist[v] = t.first;
42 for(int i = 1; i <= n; i++)
43 {
44 if(!flag[i])
45 {
46 double m = max(dist[v], G[v][i]);
47 pq.push(P(m, i));
48 }
49 }
50 }
51
52 }
53
54
55 double calc(point a, point b)
56 {
57 double ans;
58 double x = a.x - b.x;
59 double y = a.y - b.y;
60 ans = sqrt(x*x + y*y);
61 return ans;
62 }
63
64
65 int main()
66 {
67 //freopen("in.txt", "r", stdin);
68 int Case = 1;
69 while(scanf("%d", &n) != EOF)
70 {
71 if(n == 0)
72 break;
73 if(Case != 1)
74 puts("");
75 for(int i = 1; i <= n; i++)
76 {
77 scanf("%d%d", &node[i].x, &node[i].y);
78 }
79 for(int i = 1; i <= n; i++)
80 {
81 for(int j = i+1; j <= n; j++)
82 {
83 G[i][j] = calc(node[i], node[j]);
84 G[j][i] = G[i][j];
85 }
86 G[i][i] = 0;
87 }
88 Dijkstra(1);
89 printf("Scenario #%d\n", Case++);
90 printf("Frog Distance = %.3f\n", dist[2]);
91 };
92 return 0;
93 }

POJ_2253 Frogger 【最短路变形】的更多相关文章

  1. POJ 2253 Frogger ( 最短路变形 || 最小生成树 )

    题意 : 给出二维平面上 N 个点,前两个点为起点和终点,问你从起点到终点的所有路径中拥有最短两点间距是多少. 分析 : ① 考虑最小生成树中 Kruskal 算法,在建树的过程中贪心的从最小的边一个 ...

  2. POJ2253 Frogger —— 最短路变形

    题目链接:http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  3. B - Frogger 最短路变形('最长路'求'最短路','最短路'求'最长路')

    http://poj.org/problem?id=2253 题目大意: 有一只可怜没人爱的小青蛙,打算去找他的女神青蛙姐姐,但是池塘水路不能走,所以只能通过蹦跶的形式到达目的地,问你从小青蛙到青蛙姐 ...

  4. POJ 2253 Frogger -- 最短路变形

    这题的坑点在POJ输出double不能用%.lf而要用%.f...真是神坑. 题意:给出一个无向图,求节点1到2之间的最大边的边权的最小值. 算法:Dijkstra 题目每次选择权值最小的边进行延伸访 ...

  5. POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)

    做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...

  6. POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...

  7. POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]

    题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...

  8. POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;

    Heavy Transportation Time Limit: 3000MS   Memory Limit: 30000K          Description Background  Hugo ...

  9. HDOJ find the safest road 1596【最短路变形】

    find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  10. HN0I2000最优乘车 (最短路变形)

    HN0I2000最优乘车 (最短路变形) 版权声明:本篇随笔版权归作者YJSheep(www.cnblogs.com/yangyaojia)所有,转载请保留原地址! [试题]为了简化城市公共汽车收费系 ...

随机推荐

  1. meterpreter php payload && windows payload 学习

    一 情景 本地kali linux 192.168.1.2 目标 windows NT 服务器192.168.1.4 目的是获取shell 二 过程 首先在linux建立终端 ,msfconsole ...

  2. chrome禁用缓存:调试javascript注意事项

    chrome禁用缓存:调试javascript   chrome对js和图片的缓存,导致调试的程序不是最新的,有时F5刷新了都没用. 可以禁用缓存: 先按F12,再按F1, 勾选 Disable ca ...

  3. cobaltstrike的使用

    0x01 介绍 Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器.Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以 ...

  4. 链接脚本再探和VMA与LMA

    链接脚本简单描述 连接脚本的描述都是以节(section)的单位的,网上也有很多描述链接脚本语法的好文章,再不济还有官方的说明文档可以用来学习,其实主要就是对编译构建的整个过程有了深入的理解后就能对链 ...

  5. ARM cache 工作方式

    综述 现在的CPU的速度远远高于现代存储器的速度所以出现了cache.按和CPU距离分为L1级和L2级(SM)等.这里主要记录一下自己对cache的工作方式的学习理解. cache工作方式 cahe是 ...

  6. ARM汇编指令-STMFD/LDMFD

    根据调用规则ATPCS,程序一般都使用FD(FullDescending)类型的数据栈(满栈),那么对立的就由空栈类型的数据栈.空栈是指SP操作完后指向的地址空间是未使用的,反之满栈就是SP指向的地址 ...

  7. Shell 编程快速上手

    Shell 编程快速上手 test.sh #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch ...

  8. Apple iPhone 12 Pro 数据迁移方式 All In One

    Apple iPhone 12 Pro 数据迁移方式 All In One iPhone 12 Pro https://mp.weixin.qq.com/s/US1Z_69zVQIhV-cNW1E6A ...

  9. Headless Chrome Node API

    puppeteer Headless Chrome Node API https://github.com/GoogleChrome/puppeteer https://pptr.dev/ PWA h ...

  10. GreenSock & SVG Animation

    GreenSock & SVG Animation refs https://greensock.com/ https://greensock.com/learning/ GSAP https ...