QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 512 MB Total points: 100

#12639. 股票交易所

Statistics

你刚刚开始投资股票,一位内部人士告诉你,未来 $N$ 天内将会有 $N$ 个价格(以美元为单位)分配给该股票(分配顺序未知)。列表中的每个价格都将恰好分配给未来 $N$ 天中的某一天,且同一天内的价格不会改变。你的这位内部人士朋友愿意为你做任何分配,因此你希望通过分配这些价格来最大化你的利润。

假设你已经将 $N$ 个价格分配给了 $N$ 天。在第 1 天之前,你已经拥有 1 单位的该股票,且手头没有任何现金。在接下来的 $N$ 天里,每一天你都可以卖出(可以是部分单位)你拥有的股票(你会获得美元),或者买入(可以是部分单位)可用的股票(你需要支付美元),交易价格为当天分配的价格。你也可以在任何一天什么都不做。假设每一天都有无限的股票供应。

最终的利润就是你拥有的现金总额,因此你需要在 $N$ 天结束时卖出所有股票。

给定价格列表,你的任务是进行某种分配,以获得最大利润。

输入格式

程序将在一个或多个测试用例上进行测试。输入的第一行包含一个整数 $T$ ($1 \le T \le 100$),表示测试用例的数量。接下来是 $T$ 个测试用例。

每个测试用例以一行包含一个整数 $N$ ($1 \le N \le 10^5$) 开始,表示天数;随后是一行包含 $N$ 个正整数,由空格分隔,表示你将要分配的价格列表,每个价格最大为 $10^6$。

输出格式

对于每个测试用例,输出一行,包含一个保留到小数点后 6 位的十进制数,表示你能获得的最大利润。保证结果不会超过 $10^{18}$。

样例

样例输入 1

2
3
1 2 3
1
100

样例输出 1

6.000000
100.000000

说明

在第一个测试用例中,你将价格按“2 1 3”的顺序分配,第一天你以 2 美元卖出你拥有的单位,第二天你以 1 美元买入 2 个单位,第三天你以 3 美元卖出这 2 个单位,最终你获得了 6 美元的利润。

在第二个测试用例中,你只有 1 天时间,你必须在那一天卖出你拥有的单位。

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.