QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 2048 MB 満点: 100

#3188. 欧几里得旅行商问题

統計

著名的 Arora-Mitchell 近似算法用于解决欧几里得旅行商问题(Euclidean TSP),由 Sanjeev Arora 和 Joseph S. B. Mitchell 于 1998 年独立发现。它可以在运行时间为 $$n(\log n)^{O((c\sqrt{d})^{d-1})}$$ 内将 $d$ 维空间中最优 TSP 回路的价值近似到 $1 + 1/c$ 的因子范围内,其中 $n$ 是回路中的节点数。

Photo by psiaki

Miroslava 在一家计算机安全公司工作,现在是时候更新欧洲各地多个数据中心的共享加密密钥了。为了完成这项工作,Miroslava 打算租一架私人飞机,将密钥送到在欧洲各大机场等待的员工手中。她希望尽快返回。

Miroslava 的公司拥有一台每秒能执行 $p$ 十亿次运算的计算机。由于我们可以将欧洲近似为一个二维平面,我们假设 Arora-Mitchell 算法在这台计算机上运行的时间恰好为 $$\frac{n(\log_2 n)^{c\sqrt{2}}}{p \cdot 10^9}$$ 秒,以产生最优回路的精确 $(1 + 1/c)$ 近似值。

Miroslava 注意到 $c$ 是算法的一个参数,可以利用它来获得优势,但在选择合适的值时也需要非常小心。如果她将 $c$ 设置得太低,算法会很快完成,但她花在飞越欧洲的时间会太长。另一方面,设置得太高会迫使她在等待计算机给出答案的同时,本可以利用这段时间飞行。

Miroslava 曾在另一家公司工作,从那里她知道所有欧洲主要机场的最优回路长度为 $s$ 米,但她当时在公司的职位不够高,无法获知实际的回路。给定私人飞机的速度 $v$(单位:米/秒),Miroslava 需要 $s(1 + 1/c)/v$ 秒来完成使用参数 $c$ 运行算法所产生的回路。为了简化起见,我们假设 Miroslava 可以在瞬间降落、留下密钥副本并从每个机场起飞。

假设 Miroslava 选择最优参数 $c$,她完成运行算法并分发所有密钥总共需要多长时间?

输入格式

输入包含一行,包含四个数字:

  • 一个整数 $n$ ($4 \le n \le 1\,000\,000$),机场的数量;
  • 一个实数 $p$ ($0.001 \le p \le 5\,000$),计算机每秒能执行的十亿次运算数;
  • 一个实数 $s$ ($10^6 \le s \le 10^9$),所有欧洲主要机场的最优回路长度(单位:米);
  • 一个实数 $v$ ($50 \le v \le 900$),私人飞机的速度(单位:米/秒)。

所有实数小数点后最多有 10 位数字。

输出格式

输出一行,包含分发密钥所需的最短总时间 $t$(单位:秒)以及 Miroslava 为达到时间 $t$ 应使用的参数 $c$ 的值。你的答案的绝对误差或相对误差应不超过 $10^{-6}$。

样例

输入格式 1

10 8.9 40075000 272.1

输出格式 1

157079.04857106 15.598261092309

输入格式 2

47 4.2 1337102.4 256

输出格式 2

5836.2936298227 8.9113418228146

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.