zoukankan      html  css  js  c++  java
  • hdu 1046 Gridland (找规律题)

    题意:
            将一个矩形划分成单位矩形。问从一个点出发,经过所有单位矩形的顶点1次后,回到起点的最短路径的长度是多少。
     
    思路:
            用个专业点的说法,题目求的是哈密顿回路的最短长度。其实是数学推断题。首先可以得出的是,矩形的长宽是可以调转的,这并不影响最后结果。考虑一条S型的路线,从左上角的顶点出发,走一条S型的路线以最短距离走完最多的顶点,然后最后再尽量取最短路走完剩下的点。长为奇数与偶数时,最短路径的走法如图所示。
            由此推断,两种走法都是与宽的奇偶性无关的。第一种情况,路径长度就是长宽之积;第二种情况,走到最后一个格的长度是长宽之积-1,再加上最后一个格到终点的距离,sqrt(2)。对比两种情况的路径长度可知,当长宽为一奇一偶时,应按照第一种情况计算。
      1    2    3    4                       1    2    3    4    5
    16    7    6    5                       24  25  14  13    6
    15    8    9   10                      23  22  15  12    7
    14   13   12   11                     20  21  16  11    8
                                                19  18  17  10    9
    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int N;
        int n,m;
        int i=0;
        scanf("%d",&N);
        while(N--)
        {
            i++;
            scanf("%d %d",&n,&m);
            if(n%2==1&&m%2==1)printf("Scenario #%d:\n%.2lf\n\n",i,((double)n*m-1+sqrt(2.0)));
            else printf("Scenario #%d:\n%.2lf\n\n",i,(double)n*m);
        }
        return 0;
    }

    **注意:

            sqrt(2)会判编译错误,正确写法为sqrt(2.0)。

  • 相关阅读:
    Navigator对象
    Location对象
    History 对象
    计时器用法
    window对象
    某班的成绩出来了,现在老师要把班级的成绩打印出来,和 显示当前时间
    牛客练习赛14A(唯一分解定理)
    贪心法(举例子强行凑规律)
    线性筛(欧拉筛法)
    欧拉函数
  • 原文地址:https://www.cnblogs.com/XDJjy/p/3002972.html
Copyright © 2011-2022 走看看