QOJ.ac

QOJ

时间限制: 1 s 内存限制: 512 MB 总分: 100

#3362. 打字猴

统计

你得到了一只猴子,它会使用打字机,甚至能够按照特定的概率分布敲击字母。

你相信这只猴子最终能够打出莎士比亚的全集。然而,你的朋友 Eirik 认为,这只猴子更有可能写出《哈利·波特》系列中的另一部小说。

为了解决这个分歧,你需要编写一个程序,计算猴子在打出另一段文字之前先打出某段特定文字的概率,这里用单词来表示。如果一个单词在猴子敲击出的字母流中作为子串出现,则称该单词被产生。猴子只能敲击英文小写字母。

输入格式

输入的第一行包含一个整数 $T$,表示测试用例的数量。 每个测试用例包含两行。第一行包含 26 个浮点数 $p_a, p_b, \dots, p_z$,表示猴子敲击每个字母的概率,每个概率之间用空格分隔。第二行包含两个字符串 $P$ 和 $Q$,中间用空格分隔。两个字符串均由英文小写字母组成。这两个字符串永远不会相等,且猴子能够产生这两个字符串的概率始终大于零。不存在猴子能同时产生这两个字符串的测试用例。

输出格式

对于每个测试用例,输出猴子在产生单词 $Q$ 之前产生单词 $P$ 的概率。

数据范围

  • $0 < T \leq 100$
  • $0 \leq p_{\alpha} \leq 1$
  • $\sum p_{\alpha} = 1$
  • $0 < |P|, |Q| \leq 16$
  • 与正确答案的绝对误差或相对误差不超过 $10^{-7}$ 即可被接受。
  • 猴子的按键是独立事件。

样例

输入 1

1
0.1 0 0 0 0.1 0 0 0.1 0 0 0 0.1 0.1 0 0.1 0.1 0 0.1 0 0.2 0 0 0 0 0 0
hamlet potter

输出 1

0.33333333333333

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.