#AEAI06007. 操作方式与可供性匹配

操作方式与可供性匹配

题目描述

不同物体适合不同的操作方式:重物需要夹爪载荷足够,扁平物体可能适合吸盘,易碎物体不能被推,带把手的物体可以用挂取动作。具身智能部希望机器人先用少量准备动作切换工具或模式,再选择一个安全的最终操作。

物体属性包括重量、尺寸、是否易碎、是否有把手、是否平整、所需夹爪开口、是否稳定以及周围是否清空。机器人约束包括最大载荷、夹爪开口范围、当前工具、当前模式、是否有吸盘、最大允许风险和夹爪是否空闲。

动作分两类:kind=0 为准备动作,只改变工具、模式、稳定标记或清空标记,可连续执行,最多执行 pmax 个;kind!=0 为最终操作,只能作为序列最后一步。准备动作要求当前工具/模式满足 req_toolreq_mode,其中 -1 表示不限制;输出字段为 -1 时表示保持原值。

最终操作还要满足可供性硬约束:

  • kind=1kind=5:夹爪空闲,重量不超过最大载荷,开口在闭区间 [min_open, max_open] 内,且初始 clear=1
  • kind=2:夹爪空闲,有吸盘且物体平整。
  • kind=3:夹爪空闲,物体不易碎,且当前搜索状态的 clear=1
  • kind=4:夹爪空闲,物体有把手且重量不超过最大载荷。

总风险不得超过 max_risk。在所有可行方案中,选择 (总代价, 总风险, 序列长度, 动作编号序列, 最终工具, 最终模式) 字典序最小的方案。

输入格式

第一行输入:

weight size fragile handle flat grip_width stable clear

第二行输入:

max_load min_open max_open tool mode suction max_risk free

第三行输入 pmax a。接下来 a 行,每行输入一个动作:

aid kind cost risk req_tool req_mode out_tool out_mode stable_set clear_set

所有动作按 aid 升序参与搜索。

输出格式

若不存在安全操作,输出:

NO_SAFE_ACTION

否则输出:

len aid1 aid2 ... cost risk final_tool final_mode

其中 costrisk 保留 6 位小数。

数据范围与测试提示

  • 正式测试会覆盖样例没有出现的边界输入,请不要依赖样例规模或样例顺序写特判。
  • 输出只包含题目要求的字段,不要输出调试信息;浮点结果按题面要求保留 6 位小数。
  • 操作方式与可供性可能多重匹配或完全不匹配,隐藏数据会检查并列和拒绝分支。
  • 若动作需要多个条件同时满足,应先筛合法性再做评分排序,输出编号按题面基准。
  • 准备动作最多 pmax 个,-1 表示不限制或保持原值;不改变状态的准备动作不扩展。

样例

输入样例 1

2 4 0 0 1 2 0 1
5 1 5 0 0 1 3 1
1 3
1 0 1 0.2 0 -1 1 -1 -1 -1
2 2 3 0.5 1 -1 1 -1 -1 -1
3 1 4 0.4 0 -1 -1 -1 -1 -1

输出样例 1

1 3 4.000000 0.400000 0 0

输入样例 2

3 3 0 0 0 2 1 1
5 1 4 0 0 0 5 1
0 1
7 1 2 0.3 0 -1 -1 -1 -1 -1

输出样例 2

1 7 2.000000 0.300000 0 0