1 条题解
-
0
自动搬运
来自洛谷,原作者为

damage
等VI出了,便是我变强的日子搬运于
2025-08-24 22:00:06,当前版本为作者最后更新于2018-06-28 15:30:07,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这道题其实只要思考一下就可以轻易解答了
因为没有障碍物等干扰设施,所以这道题目无疑没有你想象的那么难。
这种题目的进阶类型就是给定起点和终点以及障碍物,求最少转弯次数,当然就要用到搜索了,就不会有入门那么简单了。
回到正题
每个矩阵的起点可以自己设定,但是为了转弯次数最少,当然是设在边角上了(理由自己想)。
但这题却绝对不是什么模拟、搜索题,只要掌握其中的规律就可以了。
通过观察样例,发现每个矩阵的最少转弯次数K就是矩阵的长和宽N和M中较少的一个的两倍-2,即写成表达式为2*(min(n,m)-1)
仔细思考一下就会发现:从边角出发,若想使转弯次数最少,就必须得走到尽头再转弯,而转弯次数却和另一条边有关系,设另一条边的长度为X,每走到尽头就要转弯一次并向前走一步再转弯走到尽头······如此循环,就是最容易想到的最简单的最少转弯次数了,到最后一条路时就转了**2*(X-1)**次弯。易知X越小越好(废话),所以X就是矩阵长和宽中M和N较小的一个了。
代码:
#include<stdio.h> int t,temp,temp2; int main() { scanf("%d",&t); while(t--) //多组数据 { scanf("%d%d",&temp,&temp2); if(temp<temp2) printf("%d\n",(temp-1)*2); //选择较小的一个按表达式输出 else printf("%d\n",(temp2-1)*2); } return 0; }
- 1
信息
- ID
- 3407
- 时间
- 1000ms
- 内存
- 63MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者