-
不知为何点赞越来越多,来更新一下这个题的详细思路。 - 2022/3/18
-
找规律可以发现每层的右上角点所需步数为为$4k^2$,求任意一个点的dis首先找到这个点所在的层数
如果在该层的左或上则减去该点到右上角曼哈顿距离,
如果在该层的右或下则加上该点到右上角曼哈顿距离;
不懂曼哈顿距离的可以先百度一下,十分简单的定义,思路不懂的可以在评论区留言或看下评论区的解释。
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long x,y; cin>>x>>y;
long long k = max(abs(x), abs(y));
if(x >= y) cout<<4 * k * k + abs(x - k) + abs(y - k)<<endl;
else cout<<4 * k * k - abs(x - k) - abs(y - k)<<endl;
return 0;
}
曼哈顿距离就是 , 两点间只走平行于坐标轴直线的距离之和。
比如直角坐标系中,就是只走平行线、垂直线,相加就是曼哈顿距离,对应题目中的折线构成。
贴个自己理解滴注释
做出中等题的感觉原来是这样
我靠,我还想着自己模拟出来,一个小时都没对
优雅,太优雅了。
怎么找到这个规律的,tql
太妙了
太优雅了,膜拜
tql
elegance
妙啊
orz
太优雅了
膜拜大佬!
tql,咋找出这个规律的
优雅
优雅
666
666
%
tql