zoukankan      html  css  js  c++  java
  • poj 1450 Gridland

    Gridland

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 4996    Accepted Submission(s): 2281

    Problem Description
    For years, computer scientists have been trying to find efficient solutions to different computing problems. For some of them efficient algorithms are already available, these are the “easy” problems like sorting, evaluating a polynomial or finding the shortest path in a graph. For the “hard” ones only exponential-time algorithms are known. The traveling-salesman problem belongs to this latter group. Given a set of N towns and roads between these towns, the problem is to compute the shortest path allowing a salesman to visit each of the towns once and only once and return to the starting point.

    The president of Gridland has hired you to design a program that calculates the length of the shortest traveling-salesman tour for the towns in the country. In Gridland, there is one town at each of the points of a rectangular grid. Roads run from every town in the directions North, Northwest, West, Southwest, South, Southeast, East, and Northeast, provided that there is a neighbouring town in that direction. The distance between neighbouring towns in directions North–South or East–West is 1 unit. The length of the roads is measured by the Euclidean distance. For example, Figure 7 shows 2 × 3-Gridland, i.e., a rectangular grid of dimensions 2 by 3. In 2 × 3-Gridland, the shortest tour has length 6. 

     

    Input

    The first line contains the number of scenarios.

    For each scenario, the grid dimensions m and n will be given as two integer numbers in a single line, separated by a single blank, satisfying 1 < m < 50 and 1 < n < 50.
     
    Output
    The output for each scenario begins with a line containing “Scenario #i:”, where i is the number of the scenario starting at 1. In the next line, print the length of the shortest traveling-salesman tour rounded to two decimal digits. The output for every scenario ends with a blank line.
     
    Sample Input
    2 2 2 2 3
     
    Sample Output
    Scenario #1: 4.00 Scenario #2: 6.00
     
    Source
     
     1 #include <stdio.h>
     2 #include <math.h>
     3  
     4 int main()
     5 {
     6     int t,i = 1;
     7     scanf("%d",&t);
     8     while(t--)
     9     {
    10         double n,m;
    11         scanf("%lf%lf",&n,&m);
    12 
    13         printf("Scenario #%d:
    ",i++);
    14 
    15         if((int)n%2==0 || (int)m%2==0)
    16             printf("%.2lf
    ",n*m);
    17         else
    18             printf("%.2lf
    ",n*m-1+sqrt(2.0));
    19         printf("
    ");
    20     }
    21  
    22     return 0;
    23 }
    View Code
  • 相关阅读:
    第三次博客园作业
    centos7+jdk1.8+tomcat8 配置https
    输入30个数存入数组a,求出数的每个位数的平方和存入数组b,从小到大排列后输出(C语言)
    50个[100,300]的随机数,要求用二分法查找从键盘录入的关键数字。找到回复位置,找不到回复不存在(C语言)
    产生20个随机数,在[200,400]内,其中能被5整除的存入数组array2,要求输出array2中的平均值(C语言)
    最小生成树
    PTA路径判断
    PTA构造哈夫曼树
    图的其中两种表示方式
    中序遍历树并判断是否为二叉搜索树
  • 原文地址:https://www.cnblogs.com/samjustin/p/4573210.html
Copyright © 2011-2022 走看看