QOJ.ac

QOJ

Süre Sınırı: 1 s Bellek Sınırı: 64 MB Toplam puan: 100

#23809. 行路嘅聖誕老人

İstatistikler

題目描述

舊年年尾,聖誕老人唔記得俾 JOI 村嘅小朋友派聖誕禮物。所以,為咗表示歉意,佢決定派朱古力蛋糕俾班小朋友。因為派送嘅日子就喺聽日,差唔多要開始諗移動計劃啦。

JOI 村被南北方向筆直延伸嘅 $W$ 條道路同埋東西方向筆直延伸嘅 $H$ 條道路劃分成棋盤格狀。南北方向嘅 $W$ 條道路由西向東依次編號為 $1, 2, \dots, W$,東西方向嘅 $H$ 條道路由南向北依次編號為 $1, 2, \dots, H$。由西數起第 $x$ 條南北方向嘅道路同由南數起第 $y$ 條東西方向嘅道路相交嘅交叉點記作 $(x, y)$。JOI 村入面有 $N$ 間屋,佢哋各自位於某個交叉點上面。聖誕老人只可以沿住道路移動。喺相鄰交叉點之間移動所需嘅時間係 $1$。

因為 JOI 村所有屋企入面都有小朋友,聖誕老人必須行勻 JOI 村嘅所有屋企,每間屋派 $1$ 個朱古力蛋糕。拎住珍貴嘅朱古力蛋糕同馴鹿一齊喺天上面飛嚟飛去有啲危險,所以聖誕老人同馴鹿決定降落喺 JOI 村嘅某個交叉點上面,再由聖誕老人由嗰度行路去派朱古力蛋糕。聖誕老人唔會同時拎住 $2$ 個或以上嘅朱古力蛋糕行路。換句話講,聖誕老人每次將朱古力蛋糕送到 $1$ 間屋之後,都會返去降落嗰個交叉點。

聖誕老人決定揀一個移動計劃,令到由降落喺 JOI 村開始到派晒朱古力蛋糕俾所有屋企為止嘅所需時間最細。注意,派完朱古力蛋糕俾最後一間屋之後返去降落交叉點嘅時間唔計入所需時間入面。另外,唔考慮除咗移動所需時間之外嘅任何因素。

俾定各間屋位置嘅資訊,請寫一個程式,求當聖誕老人妥善揀選降落嘅交叉點嗰陣,由降落喺 JOI 村開始到派晒朱古力蛋糕俾所有屋企為止所需時間嘅最小值,同埋為咗令所需時間最細應該降落嘅交叉點位置。

輸入格式

由標準輸入讀入以下輸入:

  • 第 $1$ 行包含用空格隔開嘅整數 $W, H$,表示各個方向嘅道路數量。
  • 第 $2$ 行包含整數 $N$,表示屋企嘅數量。
  • 接落嚟嘅 $N$ 行包含各間屋位置嘅資訊。第 $(i + 2)$ 行($1 \le i \le N$)包含用空格隔開嘅整數 $X_i, Y_i$,表示第 $i$ 間屋位於交叉點 $(X_i, Y_i)$。呢 $N$ 個交叉點全部都唔同。

輸出格式

向標準輸出輸出以下數據:

  • 第 $1$ 行必須輸出 $1$ 個整數,表示所需時間嘅最小值。
  • 第 $2$ 行:設為咗令所需時間最細應該降落嘅交叉點係 $(x, y)$,就必須按呢個順序輸出用空格隔開嘅 $2$ 個整數 $x, y$。如果合適嘅交叉點有幾個,就揀當中最近西面(即係 $x$ 嘅值最細)嘅交叉點;如果仲係唔可以唯一確定做 $1$ 個,就再喺當中揀最近南面(即係 $y$ 嘅值最細)嘅交叉點。

範例

範例 1

輸入
5 4
3
1 1
3 4
5 3
輸出
10
3 3
解釋

例如,可以透過以下移動計劃令所需時間最細:

  • 降落喺交叉點 $(3, 3)$。
  • 派朱古力蛋糕俾位於交叉點 $(3, 4)$ 嘅屋企。到而家為止經過嘅時間係 $1$。
  • 返去交叉點 $(3, 3)$。到而家為止經過嘅時間係 $2$。
  • 派朱古力蛋糕俾位於交叉點 $(5, 3)$ 嘅屋企。到而家為止經過嘅時間係 $4$。
  • 返去交叉點 $(3, 3)$。到而家為止經過嘅時間係 $6$。
  • 派朱古力蛋糕俾位於交叉點 $(1, 1)$ 嘅屋企。到而家為止經過嘅時間係 $10$。

範例 2

輸入
4 6
8
1 3
3 2
4 4
2 5
2 3
3 3
3 4
2 4
輸出
21
2 3
解釋

注意,聖誕老人亦都可以降落喺有屋企嘅交叉點上面。

數據範圍與提示

  • $1 \le W \le 1000000000 = 10^9$:南北方向延伸嘅道路數量。
  • $1 \le H \le 1000000000 = 10^9$:東西方向延伸嘅道路數量。
  • $1 \le N \le 100000 = 10^5$:屋企嘅數量。
  • $1 \le X_i \le W$:第 $i$ 間屋所在位置嘅南北方向延伸嘅道路編號。
  • $1 \le Y_i \le H$:第 $i$ 間屋所在位置嘅東西方向延伸嘅道路編號。

注意,喺呢題入面,處理嘅整數範圍可能唔能夠擺入 $32$ 位元整數。

計分基準

  • 喺佔總分 $40\%$ 嘅測試數據入面,滿足 $N \le 1000$。
  • 喺佔總分 $10\%$ 嘅測試數據入面,滿足 $W \le 50, H \le 50, N \le 1000$。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.