AT_ahc043_a [AHC043A] Railway Company

题目背景

Nihonbashi Simulator は架空の国Rの鉄道会社Xを経営するターン制のシミュレーションゲームである。あなたはこのゲームの大ファンであり、高い収益を上げる会社にすることを目標としている。線路と駅を適切に建設することで、R国に住む人の通勤を手助けしつつ、Xを最高の鉄道会社に育て上げよう! ### 問題文 R国は $ N $ 行 $ N $ 列のグリッド状に分けられた区画からなる。上から $ i $ 行目 $ (0 \le i < N) $ 、左から $ j $ 列目 $ (0 \le j < N) $ の区画を $ (i,j) $ とする。各区画は更地、線路、駅のいずれかである: - 更地 - 他の区画と接続しない。 - コストを払うことで、駅または線路を建設することができる。 - 線路 - 上下左右の更地でない区画のうち、最大2つの区画と接続する。線路は接続先に応じて6種類あり、以下の図のように番号付けられる。 - コストを払うことで、駅に置き換えることができる。 - 駅 - 上下左右の最大4つの更地でない区画と接続する。 1 2 3 4 5 6 線路の種類 R国には $ M $ 人の人が住んでいる。人 $ c $ の家は区画 $ (i_{c,s}, j_{c,s}) $ 、職場は区画 $ (i_{c,t}, j_{c,t}) $ にあり、この間を通勤している。 ゲーム開始時、鉄道会社Xは $ K $ の資金を持っており、全ての区画は更地である。ここから $ T $ ターンの間ゲームを行う。 ### ゲームのすすめ方 各ターンでは、建設フェーズと集金フェーズがこの順で実行される。 #### 建設フェーズ 建設フェーズでは、線路の配置・駅の配置・待機のうち1つの行動を行う。ただし、資金が0未満になるような行動はできない。資金が0未満かどうかの判定は集金フェーズの前に行われる。 - 線路の配置: 更地の区画を1つ選び、その区画を6種類の線路のいずれか1つに変更する。資金が100減る。 - 駅の配置: 更地または線路の区画を1つ選び、その区画を駅に変更する。資金が5000減る。 - 待機: 区画の状態と資金は変化しない。 #### 集金フェーズ R国に住む人が一斉に通勤を行う。人 $ c $ は、以下の条件を満たす区画 $ (i_p, j_p) $ , $ (i_q, j_q) $ が存在するときのみ、鉄道会社Xの鉄道を利用して料金を払う。 人 $ c $ が鉄道を利用したとき、鉄道会社Xの資金が $ |i_{c,s} - i_{c,t}| + |j_{c, s} - j _{c, t} | $ 増える。 - 区画 $ (i_p, j_p), (i_q, j_q) $ は駅である。 - 区画 $ (i_p, j_p) $ から、 $ 0 $ 個以上の互いに接続された駅の区画または線路の区画を経由して、 $ (i_q, j_q) $ に到達できる。 - $ | i_{c,s} - i_p| + | j_{c,s} - j_p| \leq 2 $ - $ | i_{c,t} - i_q| + | j_{c,t} - j_q| \leq 2 $ $ T $ ターン終了時点での資金ができるだけ大きくなるように行動を決めよ。

题目描述

[problemUrl]: https://atcoder.jp/contests/ahc043/tasks/ahc043_a Nihonbashi Simulator 是一款以虚构国家 R 的铁路公司 X 为经营对象的回合制模拟游戏。你是这款游戏的忠实粉丝,目标是将公司经营得利润丰厚。通过合理建设铁路和车站,帮助 R 国居民通勤,将 X 培养成最棒的铁路公司吧! R 国被划分为 $N$ 行 $N$ 列的网格区域。第 $i$ 行($0 \leq i < N$)和第 $j$ 列($0 \leq j < N$)的区域记作 $(i, j)$。每个区域可以是空地、铁路或车站之一: - 空地 - 不与其他区域相连。 - 可以支付费用建设车站或铁路。 - 铁路 - 最多与上下左右的非空地区域中的 2 个区域相连。根据连接方式有 6 种类型,编号如下图所示。 - 可以支付费用将其替换为车站。 - 车站 - 最多与上下左右的 4 个非空地区域相连。 R 国有 $M$ 名居民。第 $c$ 个人的家在 $(i_{c,s}, j_{c,s})$,工作地点在 $(i_{c,t}, j_{c,t})$,他们需要在两地通勤。 游戏开始时,铁路公司 X 拥有 $K$ 资金,所有区域均为空地。游戏共进行 $T$ 回合。 ## 游戏流程 每回合依次执行建设阶段和收款阶段。 ### 建设阶段 在建设阶段,你可以选择以下三种操作之一:铺设铁路、建设车站或等待。不能进行导致资金为负的操作(在收款阶段前判断)。 - 铺设铁路:选择一个空地,将其变为 6 种铁路之一。资金减少 100。 - 建设车站:选择一个空地或铁路,将其变为车站。资金减少 5000。 - 等待:区域和资金均不变。 ### 收款阶段 R 国居民同时进行通勤。对于第 $c$ 个人,若存在区域 $(i_p, j_p)$ 和 $(i_q, j_q)$ 满足以下条件,则他会使用铁路公司 X 的铁路并支付费用。每当居民使用铁路时,公司资金增加 $|i_{c,s} - i_{c,t}| + |j_{c,s} - j_{c,t}|$。 - 区域 $(i_p, j_p)$ 和 $(i_q, j_q)$ 均为车站。 - 从 $(i_p, j_p)$ 出发,经过若干相连的车站或铁路(可为 0 个),可以到达 $(i_q, j_q)$。 - $|i_{c,s} - i_p| + |j_{c,s} - j_p| \leq 2$ - $|i_{c,t} - i_q| + |j_{c,t} - j_q| \leq 2$ 请在 $T$ 回合结束时,使资金尽可能多。 #

输入格式

输入通过标准输入给出,格式如下: ``` N M K T i_{0, s} j_{0, s} i_{0, t} j_{0, t} i_{1, s} j_{1, s} i_{1, t} j_{1, t} ⋮ i_{M-1, s} j_{M-1, s} i_{M-1, t} j_{M-1, t} ``` - 第 1 行为 4 个整数 $N, M, K, T$,以空格分隔。 - $N$:区域的行数和列数,$N = 50$。 - $M$:R 国居民人数,$50 \leq M \leq 1600$。 - $K$:铁路公司 X 的初始资金,$11000 \leq K \leq 20000$。 - $T$:游戏回合数,$T = 800$。 - 接下来的 $M$ 行,每行 4 个整数,描述居民的通勤信息。第 $c$ 个人的家在 $(i_{c,s}, j_{c,s})$,工作在 $(i_{c,t}, j_{c,t})$。$0 \leq i_{c,s}, i_{c,t} < N, 0 \leq j_{c,s}, j_{c,t} < N, |i_{c,s} - i_{c,t}| + |j_{c,s} - j_{c,t}| > 4$。 #

输出格式

请输出 $T$ 行,每行描述第 $t$ 回合建设阶段的操作,格式如下: - 铺设铁路 在区域 $(i, j)$ 建设类型为 $p$ 的铁路时,输出:`p i j`(以空格分隔)。铁路类型编号见题面说明。 - 建设车站 在区域 $(i, j)$ 建设车站时,输出:`0 i j`。 - 等待 输出 `-1`。 #

说明/提示

### 得分 每个测试用例,$T$ 回合结束时的资金为**绝对得分**,相对评价得分为 $\text{round}(10^9 \times \left(\frac{\text{自身绝对得分}}{\text{全体参赛者最大绝对得分}}\right))$,所有测试用例的相对得分之和为最终得分。若某测试用例全体参赛者最大绝对得分为 $0$,则 AC 的所有参赛者该测试用例得分为 $10^9$。 若输出不合法,判为 WA,包括: - 在已有车站或铁路的区域铺设铁路 - 在已有车站的区域建设车站 - 资金为负的操作 - 铁路类型或区域指定不合法 - 输出操作数不是 $T$ 行 最终排名以系统测试(2000 个测试用例)得分为准,仅以最后一次非 CE 提交为准。 ### 输入生成方法 - $M = \mathrm{round}(50 \times 2^{\mathrm{rand\_double}(0,5)})$ - 居民家和工作地点的坐标通过混合高斯分布生成,具体见原文。 - $K = \mathrm{rand}(\max(10, d) \times 100, 2 \times N \times 100) + 10000$,$d$ 为所有居民家与工作地点曼哈顿距离的最小值。 ### 其它说明 - 可在输出中包含以 `#` 开头的注释行,评测时会忽略。 - 参见题面提供的样例程序和可视化工具。 # 输入格式 ``` N M K T i_{0, s} j_{0, s} i_{0, t} j_{0, t} i_{1, s} j_{1, s} i_{1, t} j_{1, t} ⋮ i_{M-1, s} j_{M-1, s} i_{M-1, t} j_{M-1, t} ``` - 第 1 行:4 个整数 $N, M, K, T$,以空格分隔。 - 接下来的 $M$ 行:每行 4 个整数,描述第 $c$ 个人的家和工作地点坐标。 # 输出格式 输出 $T$ 行,每行描述第 $t$ 回合的操作: - 铺设铁路:`p i j`($p$ 为铁路类型编号,$i, j$ 为坐标) - 建设车站:`0 i j` - 等待:`-1` # 提示 - 题目为模拟与优化题,目标是最大化 $T$ 回合结束时的资金。 - 具体铁路类型编号、连接规则、输入生成方法等详见题面说明。 - 可在输出中添加注释行,评测时会忽略。 - 参见题面提供的样例程序与可视化工具。 由 ChatGPT 4.1 翻译