题目
题解
题意:
给一棵有根树,每个节点一种颜色,支持动态加叶子,并且在线回答加入的叶子到根路径上出现次数不是 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}