TJU Problem 1015 Gridland
最重要的是找规律。
下面是引用 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的更多相关文章
- FOJ Problem 1015 土地划分
Problem 1015 土地划分 Accept: 823 Submit: 1956Time Limit: 1000 mSec Memory Limit : 32768 KB Probl ...
- TJU Problem 2101 Bullseye
注意代码中: result1 << " to " << result2 << ", PLAYER 1 WINS."<& ...
- TJU Problem 2548 Celebrity jeopardy
下次不要被长题目吓到,其实不一定难. 先看输入输出,再揣测题意. 原文: 2548. Celebrity jeopardy Time Limit: 1.0 Seconds Memory Lim ...
- TJU Problem 2857 Digit Sorting
原题: 2857. Digit Sorting Time Limit: 1.0 Seconds Memory Limit: 65536KTotal Runs: 3234 Accepted ...
- TJU Problem 1065 Factorial
注意数据范围,十位数以上就可以考虑long long 了,断点调试也十分重要. 原题: 1065. Factorial Time Limit: 1.0 Seconds Memory Limit ...
- TJU Problem 1100 Pi
注: 1. 对于double计算,一定要小心,必要时把与double计算相关的所有都变成double型. 2. for (int i = 0; i < N; i++) //N 不 ...
- TJU Problem 2520 Quicksum
注意: for (int i = 1; i <= aaa.length(); i++) 其中是“ i <= ",注意等号. 原题: 2520. Quicksum Time L ...
- TJU Problem 1090 City hall
注:对于每一横行的数据读取,一定小心不要用int型,而应该是char型或string型. 原题: 1090. City hall Time Limit: 1.0 Seconds Memory ...
- TJU Problem 1644 Reverse Text
注意: int N; cin >> N; cin.ignore(); 同于 int N; scanf("%d\n",&N); 另:关于 cin 与 scanf: ...
随机推荐
- dockfile杂项
工程源代码+工程的配置文件 在外面配置好 1 工程的配置文件,是工程的一部分 2 要贯彻内聚原则, 用1句挂载整个工程. 在外面集中配置好在一个路径下,一起挂进去或者COPY进去. 防止先COPY了体 ...
- 51nod 1682 中位数计数(前缀和)
51nod 1682 中位数计数 思路: sum[i]表示到i为止的前缀和(比a[i]小的记为-1,相等的记为0,比a[i]大的记为1,然后求这些-1,0,1的前缀和): hash[sum[i]+N] ...
- 原生js的博客
原生js一里边还有很多二三等http://www.cnblogs.com/charling/p/3527561.html 选区器 http://wenku.baidu.com/link?url=zr2 ...
- Python基础--列表、元组
一.什么是列表.元组 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见 ...
- python-day11--函数
1.为什么要有函数,函数得作用: 解决代码冗余.可读性差.可扩展性差(不易修改)的问题. 2.函数得定义: def 函数名(): '''注释''' #(注释这个函数的作用) 函数体 返回值 3 ...
- 解析XML文档大致流程以及相关方法
---恢复内容开始--- 使用dom解析XML文档的大致流程(要导入dom4j)1:创建SAXReader2:使用SAXReader读取xml文档,并生成对应的Document对象,该对象保存了该文档 ...
- 贪心(二)NYOJ14题
#include <iostream> #include<cmath> #include "algorithm" using namespace std; ...
- VS2010-自定义控件
1.自定义控件 (1)新建—项目,项目模板选择“类库”,取名smControl,填写项目文件保存目录,点击确定 (2)完成后在解决方案资源管理器中删除类Class1 (3)添加“用户控件”——在解决方 ...
- nodejs初探一二
概念 简单来说,node.js 是一个让 JavaScript 运行在服务端的开发平台,让开发者通过JS编写服务端程序. 安装 从nodeJS官网下载对应平台的安装程序,安装完成后,打开命令行工具,然 ...
- 进程通信方式-管道pipe
管道是两个进程间进行单向通信的机制.因为管道传递数据的单向性,管道又称之为半双工管道. 1.数据只能从一个进程流向另一个进程(其中一个写管道,另一个读管道):如果要进行全双工通信,需要建立两个管道. ...