律者核心()

ZJUTOJ-律者核心

题目

题目地址-点此跳转

(按照上次说的,摸了一道崩坏题)

一只正在寻找理之律者核心的吼姆在量子之海中迷路了,布洛妮娅和希儿都想通过吼姆得到理之律者核心,于是她们会轮流帮助吼姆移动。

已知量子之海等价于欧氏平面,现在吼姆的坐标是 (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")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值