标签:个数 复杂度 mys uri 平衡 快速 情况 not 路径
\(zsy\)发现黑红树具有一些独特的性质。
\(zsy\)想从树根顺着树往上爬。他有\(\frac{p}{q}\)的概率到达红色的儿子节点,有 \(1-\frac{p}{q}\)的概率到达黑色节点。
但是他知道如果自己经过的路径是不平衡的,他会马上摔下来。
一条红黑树上的链是不平衡的,当且仅当红色节点与黑色节点的个数之差大于\(1\)。
现在他想知道\(Q\)次他刚好在高度为\(h\)的地方摔下来的概率的精确值 \(\frac{a}{b}\),要求输出\(a\),\(b\)分别对\(k\)取模后的结果。
\(n\leq10^6,Q\leq10^6,k\leq10^9+7\)(\(n\)代表高度)
\(zsy\)显然不可能在奇数层掉下来,因为他在偶数层时肯定红黑节点个数相等。
看到奇数层\(puts("0\ 0");\)
对于偶数,设\(dp[i]\)表示在该层活着的概率。(哪像我还把颜色和红黑节点数量差作为状态)
然后列\(DP\)转移方程
\[dp[i]=dp[i-2]*\frac{p}{q}*\frac{q-p}{q}*2\]
(肯定要经过一个红节点和一个黑节点,然后两者可以倒过来,则乘\(2\))
于是第\(i\)层挂掉的概率为\(dp[i-2]-dp[i]\)。
这玩意儿可以\(O(n)\)预处理,然后\(O(Q)\)答完询问,总复杂度为\(O(n)\)
(当然你要\(O(Qlogn)\)在线快速幂我也拦不住)
对于乘爆情况,先把\(\frac{2p(q-p)}{q^2}\)约分掉,保证计算过程中不用约分,就可以直接取模了。
标签:个数 复杂度 mys uri 平衡 快速 情况 not 路径
原文地址:https://www.cnblogs.com/yanshannan/p/9160335.html