您的位置:首页 > 其它

girlland

2016-01-23 18:34 218 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=37

根据这道题的描述易让人想的复杂,但通过细心寻找,可以找到规律。因此做题时先要寻找规律,如果没有规律,再选择普通方法。

解法:

这道题要求最短路径,由于要经过两个城市时,走对角线的长度要大于两条直线的长度,因此我们要避免走对角线,同时我们还要回到原来的地方,那么就会发现只有当两条边长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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: