#502. 「LibreOJ β Round」ZQC 的截图(蒙特卡洛方法)

本文介绍了一种使用蒙特卡洛方法解决动态树上颜色计数问题的算法。通过随机向量模拟,计算路径上颜色出现次数不是3的倍数的情况,并分析了误判概率,最终实现AC代码。
摘要由CSDN通过智能技术生成

题目
题解
题意:
给一棵有根树,每个节点一种颜色,支持动态加叶子,并且在线回答加入的叶子到根路径上出现次数不是 3 3 3 的倍数的颜色有 1 1 1个、 0 0 0个还是多个,并要求在答案是 1 1 1个时输出该颜色。

蒙特卡洛方法:也称统计模拟方法,将一个待求的问题转化为求一种事件的概率,然后(用各种技巧)试验该事件得到概率以解决问题。

对于这个题,我们可以给每个颜色一个随机值,那么把路径上的颜色的随机值加起来,这个值 m o d    3 \mod 3 mod3 0 0 0应该出现次数不是 3 3 3的倍数的颜色有 0 0 0个的几率大一点。
但是并不是很大。
我们用多次试验的技巧,给每个颜色一个随机的 w w w维向量。
这个路径向量之和的每一维都 m o d    3 \mod 3 mod3 0 0 0时,出现次数不是 3 3 3的倍数的颜色有 0 0 0个的几率会随着 w w w增大而增大。
考虑粗略定量几率:多个出现次数不是 3 3 3的向量之和 m o d    3 \mod 3 mod3可看做为一个随机向量。
那么这个向量每一维都 m o d    3 \mod 3 mod3 0 0 0的概率是 1 3 w \frac 1{3^w} 3w1
也就是说有 1 3 w \frac 1{3^w}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值