#AEAI07010. 最低总代价恢复状态空间搜索
最低总代价恢复状态空间搜索
题目描述
当执行链路已经失败,恢复规划不再只是找一条路,而是要在多个可恢复状态之间比较总代价。具身智能部把这个过程建成状态空间搜索题。
输入给出恢复状态、转移代价和可执行性条件。你需要使用 Dijkstra 或等价方法找到最低总代价的可执行恢复状态,并在并列时按题面规则输出稳定方案。
请特别注意不可执行状态不能作为答案、转移代价的累加边界、路径重建顺序和 SAFE_STOP 分支。
输入格式
第一行输入恢复初始状态七元组:
pos vis mode path battery risk retry
第二行输入:
max_risk min_battery max_retry max_steps
接下来输入动作数 A。随后 A 行:
aid inc_retry pre_pos pre_vis pre_mode pre_path need_battery arisk dpos dvis dmode dpath dbattery drisk cost
前置字段为 -1 表示不限制;更新字段为 -1 表示保持原值。
输出格式
若恢复成功,输出:
RECOVERED len aid... pos risk battery_used cost
若无法恢复,输出:
SAFE_STOP
判定规则
目标状态必须满足 vis = 1、mode >= 1、path = 1、battery >= min_battery 且 risk <= max_risk。动作必须满足所有前置条件、battery >= need_battery、当前 risk <= arisk,执行后 retry <= max_retry、battery >= min_battery、risk <= max_risk。
搜索深度最多 max_steps。在所有恢复方案中,选择总代价小、风险小、动作序列字典序小者。若初始状态已经满足目标条件,输出长度为 0 的恢复结果。
数据范围与测试提示
- 所有编号均按题面说明使用 1-based;字符串枚举按输入原样比较。
- 正式测试会覆盖安全停止、无可行分支、阈值等号、并列比较和恢复失败等边界情况。
- 输出只包含题目要求的字段,不要输出调试信息。
样例
输入样例 1
1 0 0 0 10 1 0
5 1 2 3
2
1 0 -1 0 -1 1 1 5 -1 1 -1 -1 1 0 1
2 0 -1 1 -1 0 1 5 -1 -1 1 1 1 0 2
输出样例 1
SAFE_STOP
输入样例 2
1 0 0 0 1 1 0
5 2 2 1
1
1 0 -1 0 -1 1 2 5 -1 1 -1 -1 1 0 1
输出样例 2
SAFE_STOP