藜愿bin


私信TA

用户名:uq_56544232446

访问量:1207

签 名:

等  级
排  名 6095
经  验 1394
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路: 在一篇博客找到的原理图。可以根据此图设计六个方向,x,y轴方向如图所示。

PP[IO]Y]Z05B$YW%SUFPF_X.png
注意事项: 可以注意到点变化的方向只有x轴,y轴,(1,1)和(-1,-1),而没有其他的方向如(-1,1),(1,-1)

参考代码:

d1, p1, q1, d2, p2, q2 = map(int, input().split())
x = [1, 1, 0, -1, -1, 0]
y = [0, 1, 1, 0, -1, -1]
xa = x[d1] * p1 + x[(d1 + 2) % 6] * q1
ya = y[d1] * p1 + y[(d1 + 2) % 6] * q1
xb = x[d2] * p2 + x[(d2 + 2) % 6] * q2
yb = y[d2] * p2 + y[(d2 + 2) % 6] * q2
if xa == xb or ya == yb or (yb - ya) * (xb - xa) > 0: # 保证两点斜率为正或与坐标轴平行
   ans = max(abs(xa - xb), abs(ya - yb))   # 比如(4,3)只需要走三次(1,1)方向再加一次(1,0)方向。
else:
   ans = abs(xa - xb) + abs(ya - yb) # 其他情况需要分别走x轴方向和y轴方向
print(ans)

 

0.0分

13 人评分

  评论区

回顾一下去年的题目233,去年我也是这么做的
2023-03-16 17:44:29
  • «
  • 1
  • »