题目描述
有一个长度为 $ n $ 的括号序列,以及 $ k $ 种不同的括号. 序列的每个位置上是哪种括号是随机的, 并且已知每个位置上出现每种左右括号的概率.求整个序列是一个合法的括号序列的概率.
我们如下定义合法括号序列:
空序列是合法括号序列;
如果 $ A $ 是合法括号序列,那么 $ lAr $ 是合法括号序列,当且仅当 $ l $ 和 $ r $ 是同种的左右括号;
如果 $ A $ 和 $ B $ 是合法括号序列,那么 (AB) 是合法括号序列.
输入格式
输入第一行包含两个整数 $ n $ 和 $ k $ . 接下来的输入分为 $ n $ 组, 每组 $ k $ 行.第 $ i $ 组第 $ j $ 行包含两个实数 $ l[i,j] $ 和 $ r[i,j] $,分别代表第 $ i $ 个位置上是第 $ j $ 类的左括号和右括号的概率。
输出格式
输出一行,包含一个实数, 代表序列是合法括号序列的概率.
建议保留至少 $ 5 $ 位小数输出.只有当你的输出与标准答案之间的绝对误差不超过 $ 10^{−5} $ 时,才会被判为正确.
样例
1.in
2 1
1.00000 0.00000
0.00000 1.00000
1.out
1.00000
2.in
4 1
0.50000 0.50000
1.00000 0.00000
0.00000 1.00000
0.50000 0.50000
2.out
0.25000
数据范围与约定
对于 $ 20 %$的数据, $ n leqslant 50, k = 1, 所有位置的概率非0即1;$
对于另外 $ 30 %$的数据, $ n leqslant 34,k=1, $ (前10个和后10个位置的所有概率都是 0.5 中间位置的概率非0即1;)
对于 $ 80 %$的数据, $ n, k leqslant 50;$
对于 $ 100 %$的数据, $ n leqslant 100 , k leqslant 50;$
题解
Code