zoukankan      html  css  js  c++  java
  • poj 2253 Frogger

    这题要说是最短路吧,其实更像DP,因为不需要把路径相加,而是更新为最小值。做这题最大的收获就是我才知道原来优先队列也能间接排序,自己写个cmp就行了,而且原理和sort的cmp一样。真的要感谢che学长。

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <cmath>
     4 #include <queue>
     5 #include <vector>
     6 using namespace std;
     7 int n,m=1;
     8 double d[205];
     9 bool used[205];
    10 typedef struct
    11 {
    12     int x,y;
    13 }Point;
    14 Point a[205];
    15 struct cmp
    16 {
    17     bool operator()(int a , int b)
    18     {
    19         return d[a] > d[b] ;
    20     }
    21 };
    22 double dis(Point d,Point b)
    23 {
    24     return sqrt(double(d.x-b.x)*(d.x-b.x)+(d.y-b.y)*(d.y-b.y));
    25 }
    26 double max(double a,double b)
    27 {
    28     return a > b ?a :b ;
    29 }
    30 double Djstl()
    31 {
    32     int t,i;
    33     priority_queue <int, vector<int>,cmp> q;
    34     memset(used,0,sizeof(used));
    35     for(i = 1; i <= n; i++)
    36         d[i] = 1000000;
    37     d[1] = 0;
    38     q.push(1);
    39     while(!q.empty())
    40     {
    41         t = q.top(); q.pop();
    42         if(used[t]) continue;
    43         used[t] = 1;
    44         for(i = 1; i <= n; i++)
    45         if(!used[i] && max(d[t],dis(a[t],a[i])) < d[i])
    46         {
    47             d[i] = max(d[t],dis(a[t],a[i]));
    48             q.push(i);
    49         }
    50     }
    51     return d[n];
    52 }
    53 int main()
    54 {
    55     int i;
    56     double ans;
    57     while(scanf("%d",&n),n)
    58     {
    59         scanf("%d%d%d%d",&a[1].x,&a[1].y,&a[n].x,&a[n].y);
    60         for(i = 2; i < n; i++)
    61             scanf("%d%d",&a[i].x,&a[i].y);
    62         ans = Djstl();
    63         printf("Scenario #%d\nFrog Distance = %.3lf\n\n",m++,ans);
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    对象无法注册到Spring容器中,手动从spring容器中拿到我们需要的对象
    sping,springMVC @Component 注解的对象都是单例模式,变量不能全局
    java读取项目路径下的中文文件乱码问题
    springboot集成mongoDB 异常认证
    观察者模式
    MongoDB学习笔记03
    MongoDB学习笔记02
    ajax参数中出现空格
    web并发模型
    MongoDB shell
  • 原文地址:https://www.cnblogs.com/lzxskjo/p/2607421.html
Copyright © 2011-2022 走看看