#P13328. [GCJ 2012 #3] Perfect Game

    ID: 13142 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>数学贪心2012期望Google Code Jam

[GCJ 2012 #3] Perfect Game

Description

你正在玩一款电子游戏,如果能够连续通关所有关卡且中途没有死亡,你将获得一个成就。你可以以任意顺序游玩各个关卡,每次游玩某一关时,你要么通关,要么死亡。每一关都有一定的通关概率,并且每一关都需要一定的时间。不论你通关还是死亡,所用时间都相同。你应该以怎样的顺序游玩关卡,才能使获得成就所需的期望时间最小?假设每当你死亡后,会立刻从你设定的顺序的第一关重新开始。

注意:如果你未能通关某一关,你本人并不会真的死亡——只是游戏角色死亡而已。如果不是这样,恐怕只有极少数人会尝试获得这个成就。

Input Format

输入的第一行为测试用例数 TT。接下来有 TT 组测试数据,每组测试数据包含三行。第一行为一个整数 NN,表示关卡数量。第二行为 NN 个以空格分隔的整数 LiL_i,表示第 ii 关所需的秒数,无论通关还是死亡用时相同。第三行为 NN 个以空格分隔的整数 PiP_i,表示你每次尝试第 ii 关时死亡的概率(百分数)。

Output Format

对于每个测试用例,输出一行 "Case #xx: ",其中 xx 是测试用例编号(从 1 开始),后接 NN 个以空格分隔的整数。第 jj 个整数表示你应该第 jj 个挑战的关卡编号,以最小化获得成就所需的期望时间。

编号从 00N1N-1。若有多种顺序能获得相同的期望时间,请输出字典序最小的那一个。对于两个顺序,字典序较小的是在第一个不同位置上编号较小的那个;对于多个顺序,字典序最小的是在所有顺序中字典序最小的那个。

3
4
1 1 1 1
50 0 20 20
3
100 10 1
0 50 0
3
100 80 50
40 20 80
Case #1: 0 2 3 1
Case #2: 1 0 2
Case #3: 2 0 1

Hint

样例说明

请注意,第二组和第三组样例并不满足小数据的约束条件。

限制条件

1T1001 \leq T \leq 100

0Pi<1000 \leq P_i < 100

测试集 1(3 分,结果可见)

  • 1N201 \leq N \leq 20
  • Li=1L_i = 1

测试集 2(7 分,结果隐藏)

  • 1N10001 \leq N \leq 1000
  • 1Li1001 \leq L_i \leq 100

翻译由 ChatGPT-4.1 完成。