任务
每个 Case 从 100,000 × 100,000 环面上的 300 个独立运动点开始。Policy 可以在每次同步移动阶段前添加连接。
连接必须合并两个不同的连通分量,其成本为取整后的环面距离,并通过动量守恒合并分量速度。第 1,000 回合结束时,图必须恰好包含十个各有 30 个点的分量。
Policy 接口
每次 Observation 都包含完整的公开运动系统;第一次 Observation 还包含固定任务常量。
| Observation 字段 | 含义 |
|---|---|
turn / turns_remaining | 当前时间状态 |
positions | 300 × 2 的点位置 |
velocities | 300 × 2 的分量速度 |
components / component_count | 规范化分量标签与当前数量 |
total_cost / initial | 累计成本与仅首次出现的任务常量 |
将当前回合的全部连接作为一个原子集合返回。空集合表示不连接并推进点系统。
| Action | 含义 |
|---|---|
{"bonds": [[point_i, point_j], ...]} | 连接当前不同分量中的点对 |
{"bonds": []} | 不连接并推进 |
评估
| 量 | 定义 |
|---|---|
| 完成条件 | 1,000 回合后恰好形成 10 个各含 30 点的分量 |
| Benchmark 得分 | 官方对数距离成本得分的平均值 |
| Policy failure | 计为 0 |
Feedback
Feedback 报告得分、总连接成本、完成情况、失败与有界连接事件覆盖。
| 字段 | 含义 |
|---|---|
mean_log_cost_score | 主要 Benchmark 得分 |
mean_total_cost | 已完成解的平均连接成本 |
completed / policy_failures | Episode 结果计数 |
bond_events / bond_events_omitted | 已发布与省略的 trace 事件数 |
trace.jsonl | 初始公开点状态,以及有界的连接事件与后续分量状态序列。 |
使用 distribution
从仓库根目录构建这个可独立安装的叶子 project:
uv sync --project environments/atcoder/ahc057/molecules --extra dev
uv build environments/atcoder/ahc057/molecules该 package 导出:
from molecules import MoleculesBenchmark, baseline_program
benchmark = MoleculesBenchmark()
program = baseline_program()