题目
(按照上次说的,摸了一道崩坏题)
一只正在寻找理之律者核心的吼姆在量子之海中迷路了,布洛妮娅和希儿都想通过吼姆得到理之律者核心,于是她们会轮流帮助吼姆移动。
已知量子之海等价于欧氏平面,现在吼姆的坐标是 (x1, y1),而理之律者核心的坐标是 (x2, y2)。
希儿和布洛妮娅能轮流移动吼姆,但必须保证每次移动只能横向或者纵向移动(即只能改变 x或者 y 坐标)任意个单位,并且每次移动后,当前位置到核心位置的曼哈顿距离必须减小。
最终带领吼姆走到律者核心所在坐标的人将会得到核心,请问在希儿先手的情况下,谁一定能得到律者核心?
如果吼姆一开始就在律者核心的位置,希儿可以直接得到律者核心。
在欧式平面上,坐标 (x1, y1) 的点 P1与坐标 (x2, y2)的点 P2的曼哈顿距离为:|x1 - x2|+|y1 - y2|。
……
解答
这题就是一个博弈题。我一向不擅长这种题目,一开始没什么思路,后来去吃了个饭回来重新想想就出来的。
从题目可以知道,到律者核心的距离有两段,|x1 - x2|,|y1 - y2|记作a,b。当一个人在移动时将a或b变成0,那另一个人就获胜。并且每次距离必须减少。
先考虑a=b情况,此时希尔先手,希尔每次在a移动了c,那布洛尼亚也在b移动c,这样二者一轮操作以后还是相等。比如一开始a=b=3,希尔移动1,那布洛尼亚也移动1,一轮下来a=b=2。只要布洛尼亚保持相同移动,最后希尔一定先将a或b变成0,那布洛尼亚必赢。
再考虑a!=b情况,此时希尔先手,希尔将二者大的部分移动到与小的部分相等。比如一开始a=5,b=3,希尔在a移动2,那a=b=3。变成上述讨论情况,不过此时布洛尼亚是先手。那希尔必赢。
最后特判,一开始吼姆就在核心上,希尔赢。
(不知道oj怎么了,用c++写显示我Compile Error,但怎么能被这种错误给拦下,我直接换成python ac掉,大家可以用c++写写,感觉是我自己的问题,不知道哪里写错了)
n = input()
for i in range(int(n)):
x1, y1, x2, y2 = map(int, input().split())
# print(x1,y1,x2,y2)
if x1 == x2 & y1 == y2:
print("Seele")
elif abs(x1 - x2) == abs(y1 - y2):
print("Bronya")
else:
print("Seele")