AT_hokudai_hitachi2022_b 農機シェアリング計画動的最適化問題

题目描述

[problemUrl]: https://atcoder.jp/contests/hokudai-hitachi2022/tasks/hokudai_hitachi2022_b 在本题中,你需要在农机共享服务中,最大限度地利用所拥有的机械和人员(下文统称为“工人”),以获得最多的报酬来承接农作业(下文称为“作业”)。你需要从空间中分布的大量作业中自行决定要承接哪些作业,并在提交/修正作业执行计划的同时,指挥工人实际处理这些作业。每个作业由多个小作业“任务”组成,工人需按规定数量处理这些任务才能视为完成,基本上承接的作业都必须完成(未完成将产生罚分)。完成作业可以获得报酬,但根据处理任务的时间点不同,报酬量也不同,因此需要考虑合适的作业时间段进行处理。此外,每个时间点可执行的任务数取决于工人的处理能力和天气,天气会在一定时间间隔内给出预报。 *报酬:假定为农作物的适宜收获期、纳米电网向农机供给的可再生能源利用率等。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_hokudai_hitachi2022_b/f19b9bb2ba8546b590e86ae1d11dfc901a363560.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_hokudai_hitachi2022_b/009d90a2d6b207177b6fc5c2750fadf009f71c0d.png) ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_hokudai_hitachi2022_b/c06102cf862e1d0436ea50377399f61eec54c2dd.png) 最初将给出以下输入信息: 1. 作业期间 2. 地理信息(图) 3. 工人信息 4. 所有作业的信息 5. 天气相关信息 6. 计划相关信息 对此,参赛者首先需要输出: 1. 要承接的作业 之后,每个时间点开始时会输入以下信息: 1. 已承接作业的信息 2. 工人的当前位置 3. (每隔一定时间)天气预报 参赛者需要输出: 1. 作业执行计划 2. 各工人的操作 如此循环,直到作业期间结束。 评分标准为: 1. 报酬 2. 未完成作业的罚分 3. 计划变更程度与计划遵守程度 以下为详细说明。

输入格式

## 输入1 首先输入: 1. 作业期间 2. 地理信息(图) 3. 工人信息 4. 所有作业的信息 5. 天气相关信息 6. 计划相关信息 具体格式如下: > $ T_{\rm{max}}\\ N_V\,\,N_E\\ u_1\quad\ v_1\quad\ d_1\\ \vdots\\ u_{N_E}\,\,\ v_{N_E}\,\,\ d_{N_E}\\ N_{\rm{worker}}\\ v^{\rm{init}}_1\,\,L^\text{max}_1\,\,N^{\rm{JobType}}_1\,\,\text{Type}^1_1\,\,\text{Type}^1_2\,\,\cdots\ \text{Type}^1_{N^{\rm{JobType}}_1}\\ \vdots\\ v^{\rm{init}}_{N_{\rm{worker}}}\,\,L^\text{max}_{N_{\rm{worker}}}\,\,N^{\rm{JobType}}_{N_{\rm{worker}}}\,\,\text{Type}^{N_{\rm{worker}}}_1\,\,\text{Type}^{N_{\rm{worker}}}_2\,\,\cdots\ \text{Type}^{N_{\rm{worker}}}_{N^{\rm{JobType}}_1}\\ N_{\rm{job}}\\ \text{Job}_1\\ \vdots\\ \text{Job}_{N_{\rm{job}}}\\ T^{\rm{weather}}\,\,N^{\rm{weather}}\\ \begin{array}{llll} p^{\rm{weather}}_{1,1}\ & p^{\rm{weather}}_{1,2}\ & \cdots\ & p^{\rm{weather}}_{1,N^{\rm{weather}}}\\ p^{\rm{weather}}_{2,1}\ & p^{\rm{weather}}_{2,2}\ & \cdots\ & p^{\rm{weather}}_{2,N^{\rm{weather}}}\\ \vdots\ & \vdots\ & \ddots\ & \vdots\\ p^{\rm{weather}}_{N^{\rm{weather}},1}\ & p^{\rm{weather}}_{N^{\rm{weather}},2}\ & \cdots\ & p^{\rm{weather}}_{N^{\rm{weather}},N^{\rm{weather}}}\\ \end{array}\\ c_1\,\,c_2\,\,\cdots\,\,c_{N^{\rm{weather}}}\\ P_m\,\,\ R_m\,\,\ \alpha\\ t_1\,\,\ p^1_1\,\,\ p^1_2\,\,\ \cdots\ \,\,\ p^1_{N^{\rm{weather}}}\\ t_2\,\,\ p^2_1\,\,\ p^2_2\,\,\ \cdots\ \,\,\ p^2_{N^{\rm{weather}}}\\ \vdots\\ t_{N'}\,\,\ p^{N'}_1\,\,\ p^{N'}_2\,\,\ \cdots\ \,\,\ p^{N'}_{N^{\rm{weather}}} $ ($ \text{Job}_i $ 的结构见下文) ## 输入2(每个时刻) 输出1正常结束后,进入每个时刻的输入输出。时刻 $ t=1 $ 开始,每到输入2时,时刻加1。 每个时刻输入: 1. 当前天气 2. 已承接作业的信息 3. 工人的当前位置 4. (每 $ T^\text{weather} $ 时间输入一次)天气预报 格式如下: > $ w\\ N^\text{selected}\\ {\rm{id}}^{\rm{job}}_1\,\,\ n^{\rm{rest}}_1\\ \vdots\\ {\rm{id}}^{\rm{job}}_{N^\text{selected}}\,\,\ n^{\rm{rest}}_{N^\text{selected}}\\ {\rm{id}}^{\rm{worker}}_1\,\,\ u_1\,\,\ v_1\,\,\ d^{\rm{from\_u}}_1\\ \vdots\\ {\rm{id}}^{\rm{worker}}_{N_{\rm{worker}}}\,\,\ u_{N_{\rm{worker}}}\,\,\ v_{N_{\rm{worker}}}\,\,\ d^{\rm{from\_u}}_{N_{\rm{worker}}} $ **每 $ T^\text{weather} $ 时间(即 $ t $ 满足 $ (t-1)\ \mod\ T^\text{weather}\ =\ 0 $ 时)**,会额外输入天气预测: > $ t_1\,\,\ p^1_1\,\,\ p^1_2\,\,\ \cdots\ \,\,\ p^1_{N^{\rm{weather}}}\\ t_2\,\,\ p^2_1\,\,\ p^2_2\,\,\ \cdots\ \,\,\ p^2_{N^{\rm{weather}}}\\ \vdots\\ t_{N'}\,\,\ p^{N'}_1\,\,\ p^{N'}_2\,\,\ \cdots\ \,\,\ p^{N'}_{N^{\rm{weather}}} $ ## 输入3(评分) 时刻 $ t=T_\text{max} $ 的 [输出2](output2) 结束后,若输出有效,则会输入分数 $ S $,格式如下: > $ S $

输出格式

## 输出1 参赛者需选择要承接的作业,并按如下格式输出: > $ N^{\text{selected}}\,\,\ \text{id}_1\,\,\ \text{id}_2\,\,\cdots\ \,\,\text{id}_{N^{\text{selected}}} $ (末尾需换行) ## 输出2(每个时刻) 参赛者需输出: 1. 各工人的计划 2. 各工人的操作 格式如下: > $ N_\text{schedule}\\ \text{id}_1\,\,\text{id}_2\,\,\cdots\,\,\text{id}_{N_\text{schedule}}\\ \text{job}^{\text{id}_1}_t\,\,\text{job}^{\text{id}_1}_{t+1}\,\,\cdots\,\,\text{job}^{\text{id}_1}_{T_\text{max}}\\ \vdots\\ \text{job}^{\text{id}_{N_\text{schedule}}}_t\,\,\text{job}^{\text{id}_{N_\text{schedule}}}_{t+1}\,\,\cdots\,\,\text{job}^{\text{id}_{N_\text{schedule}}}_{T_\text{max}}\\ {\rm{action}}_1\\ {\rm{action}}_2\\ \vdots\\ {\rm{action}}_{N_{\rm{worker}}} $ (末尾需换行)

说明/提示

### 问题概要 本题要求你在农机共享服务中,合理分配工人和机械,选择并完成合适的作业,以最大化报酬。作业由多个任务组成,工人需在合适的时间、合适的天气下完成任务。每个作业有依赖关系、报酬函数、未完成罚分等。你需要根据输入的信息,选择承接哪些作业,并在每个时刻合理安排工人行动和作业计划。评分依据为总报酬、未完成作业的罚分、计划变更与遵守程度。 详细的输入输出格式、作业与工人属性、天气系统、计划系统、评分方法等请参见题面描述。 **注意:** - 数学公式、代码、LaTeX 环境等请严格按照原文保留。 - 题目内容较长,建议分段阅读和理解。 - 题目为交互题,需根据输入动态输出结果。 - 具体的输入输出样例、评分细则、作业依赖、天气影响、计划变更等细节请参见题面。 由 ChatGPT 4.1 翻译