girlland
2016-01-23 18:34
218 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37
根据这道题的描述易让人想的复杂,但通过细心寻找,可以找到规律。因此做题时先要寻找规律,如果没有规律,再选择普通方法。
解法:
这道题要求最短路径,由于要经过两个城市时,走对角线的长度要大于两条直线的长度,因此我们要避免走对角线,同时我们还要回到原来的地方,那么就会发现只有当两条边长m,n都为奇数时,就一定要走一条对角线才能回到原点,因此最短路径需要在原来m*n的基础上加上0.41。
代码:
根据这道题的描述易让人想的复杂,但通过细心寻找,可以找到规律。因此做题时先要寻找规律,如果没有规律,再选择普通方法。
解法:
这道题要求最短路径,由于要经过两个城市时,走对角线的长度要大于两条直线的长度,因此我们要避免走对角线,同时我们还要回到原来的地方,那么就会发现只有当两条边长m,n都为奇数时,就一定要走一条对角线才能回到原点,因此最短路径需要在原来m*n的基础上加上0.41。
代码:
#include<stdio.h> int main() { int m,n,T,i; double len; scanf("%d",&T); for(i=1;i<=T;i++) { scanf("%d%d",&m,&n); if((m%2==0)||(n%2==0)) { len=m*n; } else len=m*n+0.41; printf("Scenario #%d:\n",i); printf("%.2f\n\n",len); } return 0; }
相关文章推荐
- Nandflash中的ECC原理及实现
- NetBeans找不到C/C++编译器
- POJ1008 Maya Calendar(模拟)&&整除和取余的边界问题
- leetcode204. Count Primes
- AMD加载器实现笔记(四)
- 移动Web开发图片自适应两种常见情况解决方案
- BWT (Burrows–Wheeler_transform) 解码分析
- linux redis安装
- 调用SwingUtilities.invokeLater()将更新UI的操作放到事件派发线程中执行
- 如何返回一个二维数组
- C语言:运行中获取宏名字的技巧
- 指针理解
- 最坏情况下,找到n个元素中第二小的元素需要(n-1)+(lgn向上取整+1)
- JavaScript跨域解决方法大全
- mysql的utf8mb4设置
- Shell脚本中参数传递方法常用有8种
- 变形空间和候选消除算法(Candidate-Elimination)C++实现
- Android SDK 在线更新镜像服务器资源
- 数字签名是什么?
- ros_opencv按下键p获取一张大小一定的kinect图像并传送整型的imageNumber话题