1517 : 赛博朋克 2077:荒坂神舆的终极崩坏

时间限制Time Limit 2 Sec 内存限制Memory Limit 512 MB 提交次数Submitted 0 Times 通过次数Solved 0 Times 标准评测Standard Judge

题目描述Description

题目背景

你正在骇入由 N 个线性安全节点组成的荒坂塔核心服务器。作为顶尖黑客,你需要利用有限的系统资源(生命值与内存),在强制下载机密数据的同时,应对环境协议的侵蚀与系统过载的威胁。

核心实体与基础公理


在模拟开始前,系统初始化主角 V 的核心属性与义体。

【基础公理:生命值溢出阻断】 在模拟的任何时刻(包括结算中途),只要 HP 的数值增加,或 MaxHP 的数值改变,系统必须立刻强制执行约束:HP \leftarrow \min(HP, MaxHP)

  1. MaxHP(最大生命值): 初始值为 H_0。决定 V 的生命上限及惩罚基数, 若在任何时刻 MaxHP \le 0V 立刻被判定为脑死(FLATLINE)。

  2. HP(当前生命值): 初始值为 H_0, 承受伤害的计量槽。

  3. RAM(接入仓内存): 初始值为 RAM_0, 用于存放数据。该数值允许在计算过程中暂时为负数,但会受【阶段三】的严格管控。

  4. HEAT(义体热量): 初始值为 0, 衡量系统负荷的计量槽,最低不可小于 0。该数值受【全局中断机制】实时监听。

  5. Kerenzikov(义体-克伦齐科夫): 初始拥有 1 次充能, 仅在【阶段四】触发。

  6. Biomonitor(义体-生物监测): 初始拥有 3 次充能, 仅在【阶段四】触发。

全局中断机制:系统过载 (Overheat)


在处理整个模拟流程时,系统实时监听 HEAT 的数值。 一旦满足触发条件,立刻挂起当前正在执行的任何操作(哪怕该操作处于某个阶段的运算中途),优先执行过载逻辑。

  • 触发条件: HEAT \ge 100

  • 执行逻辑: 当触发条件满足时,持续循环执行以下 4 步,直到 HEAT < 100 或触发脑死:

    1. 神经受损:MaxHP 永久扣除 \max(1, \lfloor MaxHP / 10 \rfloor) 点。

    2. 溢出阻断:触发【基础公理】,即 HP \leftarrow \min(HP, MaxHP)

    3. 脑死判定:若此时 MaxHP \le 0V 彻底脑死(FLATLINE),程序立刻终止。

    4. 热量释放:HEAT 减去 100。

(注:中断处理完毕且 V 未脑死后,系统恢复刚才被挂起的操作继续执行。)

节点结算流程


服务器由 N 个节点组成,初始子网协议类型 Subnet = 0

对于第 i 个节点(i 从 1 到 N),必须严格按照以下四个阶段按序执行。如果在任何阶段 V 被判定脑死,立即终止所有操作,并输出当前节点编号 i

阶段一:环境侵蚀

读取当前的 Subnet 状态,执行环境结算:

  • Subnet = 1 (酸性): HP 减去 5。(此伤害即使导致 HP \le 0 也必须硬抗至【阶段四】才可使用义体救场)。

  • Subnet = 2 (超频): HEAT 增加 10。(可能会立刻触发【系统过载】中断)。

  • Subnet = 0 (常规): 无事发生。

阶段二:节点事件交互

读取当前节点的输入数据 TypeVal,执行对应事件:

  • Type 1 (遭遇黑冰): HP 减去 Val

  • Type 2 (遭遇骇客): HEAT 增加 Val(若触发过载中断,等待中断完毕且 V 存活后继续)。随后,若此时 RAM > 0,骇客将烧毁剩余内存:RAM 减去 \lfloor RAM \times 0.1 \rfloor

  • Type 3 (数据下载): 发现机密数据。系统强制将其载入背包,RAM 减去 Val。(背包需记录该数据包的初始大小 Val)。

  • Type 4 (冷却补给): HP 增加 Val(受基础公理约束)。随后 HEAT 减去 \lfloor Val / 2 \rfloor(若结果小于 0 则设为 0)。

  • Type 5 (协议篡改): 将全局 Subnet 的值变更为 Val。此更改对当前节点不再生效,自下一个节点(i+1)的阶段一始效。

阶段三:内存溢出管控

检查阶段二执行完毕后的 RAM 值。

RAM < 0,必须执行【内存倾印】循环,直到 RAM \ge 0

  1. 定位: 遍历背包中所有已下载的数据,找到初始大小(Val)最大的那一个。若有多个最大值,任选其一。

  2. 粉碎: 将该数据从背包中永久删除,并将其占用的 Val 原数退还(即 RAM 加上 Val)。

  3. 碎片发热: 粉碎操作产生冗余代码,HEAT 增加 (Val \pmod{10}) + 5(此操作可能立刻触发【系统过载】中断)

阶段四:生存状态极验

在当前节点上述所有逻辑执行完毕后,结算义体判定(必须严格按 1、2 顺序执行):

  1. 致命伤判定:
  • HP \le 0 且拥有 Kerenzikov 充能(> 0):充能数减 1,HP 强制设定为 1。

  • HP \le 0 且无充能:V 彻底脑死(FLATLINE),程序终止。

  1. 濒死救援判定:
  • 完成上述判定后,若 HP > 0HP < \lfloor MaxHP \times 0.3 \rfloor,且拥有 Biomonitor 充能(> 0):充能数减 1,HP 增加 \lfloor MaxHP \times 0.5 \rfloor(受基础公理约束)。

输入格式Input

第一行包含一个整数 T1 \le T \le 10),表示测试用例的数量。

每组测试用例第一行包含三个整数 N, H_0, RAM_0

  • 1 \le N \le 10^5

  • 1 \le H_0 \le 10^9

  • 0 \le RAM_0 \le 10^9

接下来 N 行,每行两个整数 TypeVal

  • 1 \le Type \le 5

  • Type = 5 时,0 \le Val \le 2

  • 否则,1 \le Val \le 10^9

保证所有测试用例的 N 之和不超过 2 \times 10^5

输出格式Output

对于每组测试用例,输出一行结果:

  • 若中途脑死:FLATLINED at XX 为导致脑死或被判定脑死时的节点编号,从 1 开始计)。

  • 若成功通关:MIKOSHI_REACHED P HP MaxHPP 为最终保留的神舆数据包数量,后跟最终的 HPMaxHP)。

样例Sample

提示Hint

样例说明

初始状态:MaxHP=100, HP=100, RAM=50, HEAT=0, Subnet=0

  1. 节点 1: Type=3 下载数据 40。RAM 变为 10。背包为 [40]

  2. 节点 2: Type=5 篡改协议为 2。当前节点无影响。

  3. 节点 3:

  • 阶段一:Subnet=2 生效,HEAT 增加 10。

  • 阶段二:Type=3 下载数据 30。RAM 变为 -20。背包为 [40, 30]

  • 阶段三:RAM < 0,粉碎背包内最大数据 40。RAM 恢复为 20。HEAT 增加 (40 \pmod{10}) + 5 = 5。此时 HEAT=15。背包剩余 [30]

  1. 节点 4:
  • 阶段一:HEAT 增加 10,变为 25。

  • 阶段二:Type=2 遭遇骇客,HEAT 增加 80,变为 105。

  • 全局中断触发: 105 \ge 100MaxHP 减去 \max(1, \lfloor 100/10 \rfloor) = 10,变为 90。触发公理,HP 被压低至 90。HEAT 减去 100 变为 5。

  • 中断返回:RAM 此时为 20 (> 0),烧毁 \lfloor 20 \times 0.1 \rfloor = 2RAM 变为 18。

  1. 节点 5:
  • 阶段一:HEAT 增加 10,变为 15。

  • 阶段二:Type=3 下载数据 80。RAM 变为 -62。背包为 [30, 80]

  • 阶段三:粉碎数据 80。RAM 恢复为 18。HEAT 增加 (80 \pmod{10}) + 5 = 5,变为 20。背包剩余 [30]

  1. 节点 6:

    • 阶段一:HEAT 增加 10,变为 30。

    • 阶段二:Type=1 遭遇黑冰 150,HP 变为 -60。

    • 阶段四:

    • 致命伤: HP \le 0,消耗 KerenzikovHP 强制变为 1。

    • 濒死救援: HP > 01 < \lfloor 90 \times 0.3 \rfloor (即 27)。满足条件,消耗 BiomonitorHP$ 增加 $\lfloor 90 \times 0.5 \rfloor = 45$。最终HP` 为 46。

    • 最终通关,背包仅余 1 个数据包 (30)。输出 MIKOSHI_REACHED 1 46 90

数据范围

  • 测试用例数量 (T)1 \le T \le 50

  • 单组节点数量 (N)1 \le N \le 10^5

  • 节点总数限制 (\sum N):所有测试用例的 N 之和不超过 2 \times 10^5

  • 初始最大生命值 (H_0)1 \le H_0 \le 10^9

  • 初始内存 (\mathrm{RAM}_0)0 \le \mathrm{RAM}_0 \le 10^9

  • 事件类型 (\mathrm{Type})1 \le \mathrm{Type} \le 5

  • 事件数值 (\mathrm{Val})

    • \mathrm{Type} = 5(协议篡改)时:0 \le \mathrm{Val} \le 2

    • 其他情况:1 \le \mathrm{Val} \le 10^9

出题Author

szzk

来源Source

深圳技术大学第六届程序设计竞赛