最重要的是找规律。

下面是引用 http://blog.sina.com.cn/s/blog_4dc813b20100snyv.html

的讲解:

  

 做这题时,千万不要被那个图给吓着了,其实这题就是道简单的数学题。

 首先看当m或n中有一个为2的情况,显然,只需要算周长就OK了。即(m+n-)*,考虑到至少其中一个为2,所以答案为2 *m或2*n,亦即m*n。注意这里保证了其中一个数位偶数。
当m,n≥3时,考虑至少其中一个为偶数的情况,显然,这种情况很简单,可以得出,结果为m*n,又可以和上面这种情况合并。 下面看m,n均为奇数的情况,由于不好贴图,且这题又比较简单,就不多说了,就写个最后的公式吧:
(m+n-)*-+sqrt()+(n-)*(m-)+(m-)=m*n-+sqrt()
本来还要考虑m,n互换后求最小值的,看到最后的公式后,也就不用再算了。考虑到题目里面要求保留两位小数,所以最终,公式直接定为:m*n+0.14

其中补充一张图,

  

原题:

1015.   Gridland


Time Limit: 1.0 Seconds   Memory Limit: 65536K
Total Runs: 5338   Accepted Runs: 2102

Background

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.

Problem

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.


Figure 7: A
traveling-salesman tour in 2 × 3-Gridland.

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: Northwestern
European 2001

源代码:

 #include <iostream>
#include <iomanip>
#include <cmath>
using namespace std; int main() {
int N; cin >> N;
for (int i = ; i < N; i++) {
int a, b; double res, l;
cin >> a >> b;
if (a % == || b % == ) res = a * b;
else res = a * b - 1.0 + sqrt(2.0);
cout << "Scenario #" << i+ << ":" << endl;
cout << fixed << setprecision() << res << endl;
cout << endl;
}
return ;
}

TJU Problem 1015 Gridland的更多相关文章

  1. FOJ Problem 1015 土地划分

    Problem 1015 土地划分 Accept: 823    Submit: 1956Time Limit: 1000 mSec    Memory Limit : 32768 KB  Probl ...

  2. TJU Problem 2101 Bullseye

    注意代码中: result1 << " to " << result2 << ", PLAYER 1 WINS."<& ...

  3. TJU Problem 2548 Celebrity jeopardy

    下次不要被长题目吓到,其实不一定难. 先看输入输出,再揣测题意. 原文: 2548.   Celebrity jeopardy Time Limit: 1.0 Seconds   Memory Lim ...

  4. TJU Problem 2857 Digit Sorting

    原题: 2857.   Digit Sorting Time Limit: 1.0 Seconds   Memory Limit: 65536KTotal Runs: 3234   Accepted ...

  5. TJU Problem 1065 Factorial

    注意数据范围,十位数以上就可以考虑long long 了,断点调试也十分重要. 原题: 1065.   Factorial Time Limit: 1.0 Seconds   Memory Limit ...

  6. TJU Problem 1100 Pi

    注: 1. 对于double计算,一定要小心,必要时把与double计算相关的所有都变成double型. 2. for (int i = 0; i < N; i++)         //N 不 ...

  7. TJU Problem 2520 Quicksum

    注意: for (int i = 1; i <= aaa.length(); i++) 其中是“ i <= ",注意等号. 原题: 2520.   Quicksum Time L ...

  8. TJU Problem 1090 City hall

    注:对于每一横行的数据读取,一定小心不要用int型,而应该是char型或string型. 原题: 1090.   City hall Time Limit: 1.0 Seconds   Memory ...

  9. TJU Problem 1644 Reverse Text

    注意: int N; cin >> N; cin.ignore(); 同于 int N; scanf("%d\n",&N); 另:关于 cin 与 scanf: ...

随机推荐

  1. Codeforces 768B - Code For 1(分治思想)

    768B - Code For 1 思路:类似于线段树的区间查询. 代码: #include<bits/stdc++.h> using namespace std; #define ll ...

  2. Lua面向对象 --- 继承

    工程结构: BasePlayer.lua: BasePlayer = {} BasePlayer.root = "BasePlayer" function BasePlayer:S ...

  3. 显示Unicode 字节的对应字符的小技巧

    在一段smali代码里看到这样的代码 const-string v0, "\u7528\u6237\u9a8c\u8bc1\u8fc7\u671f\uff0c\u8bf7\u91cd\u65 ...

  4. SpringBoot 中常用注解@Controller/@RestController/@RequestMapping介绍

    原文 SpringBoot 中常用注解 @Controller/@RestController/@RequestMapping介绍 @Controller 处理http请求 @Controller / ...

  5. 雷林鹏分享:C# 预处理器指令

    C# 预处理器指令 预处理器指令指导编译器在实际编译开始之前对信息进行预处理. 所有的预处理器指令都是以 # 开始.且在一行上,只有空白字符可以出现在预处理器指令之前.预处理器指令不是语句,所以它们不 ...

  6. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  7. thinkphp数组处理

    1.array_unique() 移除数组中的重复的值,并返回结果数组.当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除,对每个值只保留第一个遇到的键名,接着忽略所有后面的键名.返回的数组 ...

  8. Leetcode 82

    有个错误就是member access within null pointer of type 'struct ListNode' 其实就是判断了指针是否异常了,比如NULL->next之类.要 ...

  9. Activiti工作流笔记(1)

    Activiti下载地址: eclipse的activiti插件下载地址:http://www.activiti.org/designer/archived/activiti-designer-5.1 ...

  10. jsp 简单标签开发

    实现simpleTag接口的标签通常称为是简单标签,简单标签一共定义了5个方法 setJspContext方法 setParent方法 getParent方法 setJspBody方法 doTag方法 ...