$Luogu$ $P3802$ 小魔女帕琪

Posted peter0701

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了$Luogu$ $P3802$ 小魔女帕琪相关的知识,希望对你有一定的参考价值。

链接

背景

(orangebird)(Luogu) (P3802)

题意

给定 (7) 种技能的数量 (a_i(i in [1,7])) ,规定连续使用 (7) 种不同技能后会构成一个必杀,所有必杀互不冲突(即某个位置的某个技能可以在多个不同的必杀技中)。求使用完所有技能后构成必杀的期望次数。

解法

本来是要作为练习题的,观察了很久也没有什么好的做法。无奈看了题解。显然前 (6) 次使用技能都是无法构成必杀技的。一个重要结论是从第 (7) 次使用技能开始,所有位置构成必杀的概率相等。
一个并不那么简要的证明:
先设 (sum_limits{i in [1,7]} a_i=n)
不妨先算出第 (7) 次使用技能时构成必杀的概率 (P_7) 。先随机一种出技能的序列,就假设为 $ {1,2,3,4,5,6,7 }$ ,那么此时的概率为 $ frac{a_1}{n} imes frac{a_2}{n-1} imes frac{a_3}{n-2} imes frac{a_4}{n-3} imes frac{a_5}{n-4} imes frac{a_6}{n-5} imes frac{a_7}{n-6} $ 。那么换一种排列的概率呢?假设为 $ {2,1,4,7,6,3,5 }$ ,那么此时的概率为 $ frac{a_2}{n} imes frac{a_1}{n-1} imes frac{a_4}{n-2} imes frac{a_7}{n-3} imes frac{a_6}{n-4} imes frac{a_3}{n-5} imes frac{a_5}{n-6} $ 。将式子通分后不难发现两种排列的概率是相等的。因此我们根本不关心排列的顺序,所有的概率都是 $ frac{prod_limits{i in [1,7]}a_i}{prod_limits{i in [0,6]}(n-i)} $ 。
因此, $P_7=7! imes frac{prod_limits{i in [1,7]}a_i}{prod_limits{i in [0,6]}(n-i)} $ 。
那么,接下来就考虑 (P_8) 为多少。由于所有必杀互不冲突,则第 (8) 次使用技能时能构成必杀一定是由第 (2) 次使用技能开始的一个 (7) 阶技能排列构成的。那么,首位的元素就可以随机选择。
当首位为 (1) 技能时,构成必杀的概率为 $ frac{a_1}{n} imes 7! imes frac{a_1-1}{n-1} imes frac{a_2}{n-2} imes frac{a_3}{n-3} imes frac{a_4}{n-4} imes frac{a_5}{n-5} imes frac{a_6}{n-6} imes frac{a_7}{n-7} $ ,同理,当首位为 (i(i in [1,7])) 技能时,构成必杀的概率为 $ frac{a_i}{n} imes 7! imes frac{a_1-[i==1]}{n-1} imes frac{a_2-[i==2]}{n-2} imes frac{a_3-[i==3]}{n-3} imes frac{a_4-[i==4]}{n-4} imes frac{a_5-[i==5]}{n-5} imes frac{a_6-[i==6]}{n-6} imes frac{a_7-[i==7]}{n-7} $ ,因此 (P_8=sum_limits{i in [1,7]} { frac{a_i}{n} imes 7! imes frac{a_1-[i==1]}{n-1} imes frac{a_2-[i==2]}{n-2} imes frac{a_3-[i==3]}{n-3} imes frac{a_4-[i==4]}{n-4} imes frac{a_5-[i==5]}{n-5} imes frac{a_6-[i==6]}{n-6} imes frac{a_7-[i==7]}{n-7} }=frac{7! imes prod_limits{i in [1,7]}a_i imes (sum_limits{i in [1,7]} a_i-7)}{prod_limits{i in [0,7]} (n-i)}=frac{7! imes prod_limits{i in [1,7]}a_i}{prod_limits{i in [0,6]} (n-i)}=P_7) ,使用第 (i(i in [7,n])) 次技能时同理,命题得证。
由于每个“第 (i(i in [7,n])) 次使用技能时构成必杀”这样的随机事件都仅能发生一次,因此答案就是 $prod_limits{i in [7,n]} P_i=(n-6) imes 7! imes frac{prod_limits{i in [1,7]}a_i}{prod_limits{i in [0,6]}(n-i)} $ , (O(7)) 计算即可。

细节

请注意前 (6) 次使用技能都是无法构成必杀技的。若 (n<7) ,则答案显然为 (0.000) 而非 (-0.000)

代码

$View$ $Code$ ```cpp #include using namespace std; inline int read() { int ret=0,f=1; char ch=getchar(); while(ch>‘9‘||ch<‘0‘) { if(ch==‘-‘) f=-1; ch=getchar(); } while(ch>=‘0‘&&ch<=‘9‘) { ret=(ret<<1)+(ret<<3)+ch-‘0‘; ch=getchar(); } return ret*f; } int a[8],n; double ans=5040.0; int main() { for(register int i=1;i<=7;i++) { a[i]=read(); n+=a[i]; } if(n<7) { printf("0.000 "); return 0; } for(register int i=1;i<=7;i++) ans=ans*a[i]/(n-i+1); ans*=(n-6); printf("%0.3lf ",ans); return 0; } ```

以上是关于$Luogu$ $P3802$ 小魔女帕琪的主要内容,如果未能解决你的问题,请参考以下文章

P3802 小魔女帕琪

洛谷P3802:小魔女帕琪

洛谷 P3802 小魔女帕琪

AC日记——小魔女帕琪 洛谷 P3802

P3802 小魔女帕琪

[期望]洛谷 P3802 小魔女帕琪