QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 2048 MB 总分: 100

#15867. 选秀抽签

统计

在职业体育运动中,通常在每个赛季结束后举行选秀。选秀允许各支球队从可用的新秀中挑选新球员。选秀顺序通常通过抽签(乐透)决定。球队获得选秀顺位的概率取决于该球队在常规赛中的成绩。球队在常规赛中的战绩越差,他们在抽签中获得高顺位选秀权(并在下个赛季前增强球队实力)的概率就越高。

Image generated by Gemini 2.5 Flash. CC BY-SA 3.0

这里我们介绍一种新颖的选秀抽签过程。倒数 $N$ 支球队中的每一支都会将自己球队的标志印在一定数量的抽签球上(每个球上恰好有一个球队的标志);倒数第 $i$ 的球队在抽签中获得 $b_i$ 个乒乓球。如果球队 $i$ 的战绩比球队 $j$ 差,则 $b_i \ge b_j$。

所有的乒乓球都被放入一个搅拌容器中,并依次抽取。第一个被抽出的乒乓球上印有其标志的球队获得第一顺位选秀权。抽出的球会被丢弃。接着抽取第二个球,球上印有其标志的球队获得第二顺位选秀权,依此类推。每当抽到一个已经获得选秀权的球队的球时,该球会被忽略,并重新抽取另一个球代替。

前 3 个顺位通过这种抽签方式分配。在前 3 个顺位分配完毕后,剩余的球队(那些没有通过抽签获得前 3 顺位的球队)将按照战绩从差到好的顺序依次分配剩余的顺位。

你被某支球队的分析与策略副总裁聘请为顾问,以确定每支球队获得某些特定顺位的概率,从而帮助球队评估潜在交易方案的价值。

给定每支球队在选秀中获得的乒乓球数量,你必须计算格式为 $(t, k)$ 的查询的答案,即:球队 $t$ 获得前 $k$ 个选秀顺位之一的概率是多少?

输入格式

第一行包含一个整数 $N$ ($3 \le N \le 50$),表示参与选秀抽签的球队数量。

接下来的 $N$ 行提供了分配给每支球队的抽签球数量。具体来说,这 $N$ 行中的第 $i$ 行包含两个值:一个整数 $b_i$ ($1 \le b_i \le 50$) 和一个字符串 $t_i$。球队名称 $t_i$ 由一到十个大写字母组成。$t_i$ 的抽签球数量由 $b_i$ 表示。球队名称是唯一的,且球队严格按照战绩从差到好的顺序排列;对于紧接在球队 $t_{i+1}$ 之前列出的球队 $t_i$,保证 $b_i \ge b_{i+1}$。

下一行包含一个整数 $Q$ ($1 \le Q \le 200$),表示概率查询的数量。

接下来 $Q$ 行,每行包含一个查询。每个查询行由一个球队名称 $t_j$ 和一个整数 $k_j$ ($1 \le k_j \le N$) 组成。保证每个查询中的球队名称都存在于之前的分配列表中。

输出格式

输出 $Q$ 行。每行应包含对应查询的答案(按照它们在输入中出现的相同顺序)。如果第 $j$ 个查询是 $t_j$ 和 $k_j$,则第 $j$ 行输出应提供球队 $t_j$ 获得前 $k_j$ 个选秀顺位之一的概率。每个概率的相对误差必须小于 $10^{-6}$。

样例

输入样例 1

3
4 SUNS
2 NUGGETS
1 JAZZ
9
SUNS 1
SUNS 2
SUNS 3
NUGGETS 1
NUGGETS 2
NUGGETS 3
JAZZ 1
JAZZ 2
JAZZ 3

输出样例 1

0.571428571
0.895238095
1.0
0.285714286
0.714285714
1.0
0.142857143
0.39047619
1.0

输入样例 2

5
13 MAMMOTH
11 KNIGHTS
7 AVALANCHE
5 FLAMES
3 OILERS
9
MAMMOTH 1
MAMMOTH 2
MAMMOTH 3
MAMMOTH 4
MAMMOTH 5
KNIGHTS 1
AVALANCHE 2
FLAMES 3
OILERS 4

输出样例 2

0.333333333
0.613999767
0.825377659
1.0
1.0
0.282051282
0.381096028
0.476970929
0.306898614

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.