QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 512 MB 總分: 100

#3347. 盒子博弈

统计

公司里新来了一位送货员,他需要开车去不同的地点运送特定数量的货物。他需要运送至少 $X$ 个货物,而卡车最多能承载 $Y$ 个货物。如果货物过多,卡车会因为超重而抛锚;如果货物过少,则意味着他没有完成任务。在装货站,有一排箱子可以供他装载,每个箱子里装有指定数量的货物。

这位司机并不是最聪明的人。由于他太害羞而不敢寻求帮助,他决定在这一排箱子中随机选择一个起点,然后在从起点到末尾的箱子中(包含起点和末尾)随机选择一个终点。这两个点之间的所有箱子(包含起点和终点)都会被装上卡车。

你和其他员工开始打赌:卡车是否会抛锚、他带的货物是否太少,或者他是否足够幸运,能够顺利完成任务。这让你感到好奇:每种情况发生的实际概率是多少?为了简化问题,假设司机总是能够把所有选中的箱子装进卡车(毕竟他被录用了,说明他还是有一些本领的)。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例的数量。 每个测试用例包含三行。第一行包含一个整数 $N$,表示箱子的数量。第二行包含一个长度为 $N$ 的字符串(由 'A'-'Z' 组成),记为 $B_1B_2...B_N$(无空格),表示装货码头上箱子中货物的数量,顺序与它们在码头上的排列顺序一致。'A' 代表空箱,'B' 代表装有 1 个货物的箱子,以此类推,直到 'Z' 代表装有 25 个货物的箱子。第三行包含两个数字 $L$ 和 $U$。$L$ 是司机需要运送的货物数量,$U$ 是卡车在抛锚前能承载的最大货物数量。

输出格式

对于每个测试用例,在一行中输出三个浮点数。第一个数字表示司机成功的概率,第二个数字表示他带的货物太少的概率,第三个数字表示卡车抛锚的概率。

数据范围

  • $0 < T \le 100$
  • $1 < N \le 200000$
  • 'A' $\le B_i \le$ 'Z'
  • $0 \le L \le U \le 50000$
  • 线段的起点和终点均服从均匀概率分布。
  • 任何与正确答案误差在 $10^{-6}$ 以内的答案都将被接受。

样例

输入 1

2
4
KCHA
2 9
3
BCD
4 5

输出 1

0.5 0.25 0.25
0.16666667 0.72222222 0.11111111

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.