末影之眼
PDF 视图
题目背景
末影之眼(Eye of Ender)是一种用于定位要塞和激活末地传送门的可合成物品。
末影之眼能够用来定位末地传送门(及传送门所在的要塞):
- 手持末影之眼并按下使用键,末影之眼会飞向最近的要塞,飞过大约
个方块的距离,穿过必要的方块,并在其经过的地方留下一条带有紫色粒子的痕迹,此种粒子和末影箱的相同。
- 如果距离要塞很远,末影之眼就会飞得更高,以便在垂直方向上更明确指示玩家必须通过的路径。
- 当玩家接近要塞所在的纵向坐标轴时,末影之眼会更精准地飞行来定位这条 Y 轴。这也就意味着末影之眼可能会向下飞行,指示出玩家在要塞的上方,让玩家向下挖。
- 在空中飞行
–
秒后,末影之眼会在空中悬浮一会儿,然后掉落,变成可拾取的物品,或者有
的概率消失。因此,一颗末影之眼可以使用的期望值是
次。
- 末影之眼的飞行功能只在主世界工作,在下界、末地以及没有要塞的世界中不会起作用。
末地传送门需要末影之眼来激活。对着末地传送门框架方块按下使用键可以放置末影之眼。当 个全部放满后,末地传送门就会激活。每个末地传送门框架方块在生成时有
的概率已经放有一颗末影之眼。末影之眼一旦被放置在末地传送门框架上就无法被拆下来。
题目描述
要塞分布
要塞主要生成在主世界地下,并且通常会尽量避开海洋及其变种、沙滩及其变种、沼泽及其变种和深暗之域生物群系生成,因此生成在水下是很少见的情况。
每个世界只会生成 个要塞,它们分布于一些指定圆环上的随机位置。每个环都具有一定的半径,其环心都位于这个世界的原点(即
,
处),而不是世界出生点(出生点可能偏离原点数百格)。要塞的生成从入口的螺旋楼梯开始,所以要塞的入口螺旋楼梯所在区块的西北角一定位于环内;但要塞的其他部分可能会超出环的范围。每个环上的要塞大致上都是以均等角度分散的(例如,第一个环上的
个要塞与中心的连线大致两两间隔
度)。
要塞从中间的第一个环开始生成,然后在第二个环生成,然后在第三个环生成,以此类推,直到总数达到 。
本世界采用简化的环距参数:第 环(
)中的要塞到原点的距离约为
格,偏差不超过
格。
| 环 | 要塞数量 | 距原点的距离(格) |
|---|---|---|
下图展示了世界原点以及各个环上的要塞分布:

同一环内的要塞在方位角上均匀分布:第 环的
座相隔
,第
环的
座相隔
,第
环的
座相隔
,依此类推。第
环为剩余的
座,其方位角间距不是严格均匀的。不同环之间没有固定的角度关系。
所有要塞的坐标均为整数,具体位置由世界种子决定;每个测试点的世界都是独立随机生成的。
抛掷末影之眼
初始时持有 只末影之眼。每次抛掷需要指定一个整数坐标
;末影之眼会沿紫色粒子轨迹朝与
欧氏距离最近的那座要塞飞行,因此抛掷点不同,它指向的要塞也可能不同。
抛掷后可观测到飞行方向的水平方位角 :以正
轴为
,逆时针为正,取值范围
,精确到
度。若抛掷点恰好在某座要塞的正上方,约定方位角为
。
下图示意了一次抛掷:玩家所在位置收到的是指向最近要塞的水平方向。

抛掷后,该末影之眼有 的概率碎裂并永久失去;未碎裂的末影之眼可以继续使用。每次抛掷之后都可得知当前剩余的末影之眼数量。
作答
只允许作答一次:给出一个整数坐标 。
设作答命中的要塞,其末地传送门在生成时已预填 只末影之眼。传送门由
个末地传送门框架围成,每个框架在生成时独立地有
的概率已被插上末影之眼(平均
个),因此
通过该测试点需要同时满足以下两个条件:
与某座要塞的欧氏距离不超过
格;
- 剩余末影之眼数量不少于
,即足以点亮该传送门上所有空置的框架。
若在末影之眼耗尽后仍尝试抛掷,或作答坐标不满足上述条件,该测试点不得分。
交互
这是一道交互题,程序通过标准输入输出与交互器通信。
抛掷:输出一行
? x z
交互器返回一行
θ r
其中 为水平方位角(保留一位小数,单位为度),
为剩余末影之眼数量。
作答:输出一行
! X Z
输出后程序应当立即结束,该测试点的结果由交互器判定。
注意:
- 每次输出后必须刷新缓冲区(C++ 使用
fflush(stdout)或std::endl,Python 使用sys.stdout.flush()),否则可能因等待而超时。 、
的绝对值不得超过
。
- 除协议规定的输出外,不得向标准输出输出任何内容;调试信息应写入标准错误。
判题反馈:每个测试点判定后,反馈中会附加一行诊断信息,形如
dist=7.2/16 eyes=11/11
其中 dist 是作答点到最近要塞的欧氏距离(单位为格,容错半径为 格),
eyes 是作答时的剩余末影之眼数量与点亮该传送门所需的数量()。未满足的判据用尖括号标出——
<dist=23.4/16> eyes=11/10 表示距离超出 格,
dist=5.2/16 <eyes=10/11> 表示距离达标但眼数不足。
若抛掷或作答的协议有误(坐标越界、指令无法识别),反馈为 bad throw coords、bad answer coords、bad op '…'。末影之眼耗尽后仍尝试抛掷时,反馈为 dist=NaN/16 <eyes=-1/NaN>;此后再作答仍按正常规则判定距离与眼数。
样例
设某测试点中,第 环的
座要塞位于
、
、
。
| 输出 | 交互器返回 | 说明 |
|---|---|---|
? 0 0 |
-159.5 12 |
最近的要塞为 |
? 0 256 |
-151.8 11 |
最近的要塞仍为 |
! -1577 -590 |
两条射线交会于 |
作答点到要塞 的距离约为
格,不超过
格;若此时
,则剩余数量
亦满足,该测试点通过。
数据范围
- 抛掷与作答的坐标均为整数,绝对值不超过
。
评论