#AEAI07009. 跨模块事件驱动任务恢复状态机

跨模块事件驱动任务恢复状态机

题目描述

跨模块执行时,感知、规划、抓取和恢复模块会不断抛出事件。具身智能部需要一个确定性的状态机,把这些事件转成资源更新、恢复动作或安全停止。

你需要按输入顺序处理事件流,维护当前任务状态、资源状态和恢复次数,并在循环保护触发或规则不可继续时输出最终状态。

请不要跳过无效事件,也不要把恢复动作重复应用;每一次状态迁移、资源扣减和停止条件都以题面规则为准。

输入格式

第一行输入十个整数:

stage visible held path_ok placed energy risk max_retry risk_limit max_rec

接下来输入事件数 L。随后 L 行,每行:

event severity

event 可能为 CONF_DOWNLOSTPATH_BLOCKGRASP_SLIPPLACE_ERRORRISK_UPTIMEOUT

输出格式

输出一行:

state processed action_count actions... stage energy risk action_count

state 可能为 RUNNINGSUCCESSTASK_FAILEDSAFE_STOP

判定规则

按输入顺序处理事件。CONF_DOWNLOST 需要消耗 1 点能量重新观察;PATH_BLOCK 需要消耗 2 点能量恢复路径;GRASP_SLIPPLACE_ERRORTIMEOUT 会增加重试次数;RISK_UP 会增加风险,若超过 risk_limit,需消耗 1 点能量执行降险并令风险减少 2 且不低于 0。

若需要恢复但能量不足,输出 SAFE_STOP。若重试次数超过 max_retry,或恢复动作数达到 max_rec,输出 TASK_FAILED。若事件处理结束时 placed = 1 且未失败,输出 SUCCESS。重复遇到同一完整状态视为循环,输出 SAFE_STOP

数据范围与测试提示

  • 所有编号均按题面说明使用 1-based;字符串枚举按输入原样比较。
  • 正式测试会覆盖安全停止、无可行分支、阈值等号、并列比较和恢复失败等边界情况。
  • 输出只包含题目要求的字段,不要输出调试信息。

样例

输入样例 1

2 0 0 1 0 5 1 2 5 5
2
LOST 0
CONF_DOWN 0

输出样例 1

RUNNING 2 2 1 1 1 3 1 2

输入样例 2

3 1 1 1 0 5 4 2 5 5
1
RISK_UP 3

输出样例 2

RUNNING 1 1 5 1 4 5 1