clj的题。图是假的别看
得先做这个[HAOI2015]按位或
本题如果还用[HAOI2015]按位或
的方法,2^50拜拜
但是思路一定是这样的:min-max容斥,考虑每个S的第一触及次数期望
这个题和[HAOI2015]按位或
一个不同之处是,每个区间的选择等概率随机!
这启发我们可以对许多状态一起统计!
发现,第一次触碰到S的概率和全是0的区间个数有关,符号和1的个数有关,为了方便转移还要记录最后一个1出现的位置
f[i][j][0/1]表示最后一个1的位置在i,全是0的区间个数为j,1的奇偶性是0/1
O(n^4)大力dp即可
T组数据,考虑统计答案
可以枚举最后一个1的位置pos,pos+1~n的全0的区间个数再计算
然后计算触及一次的期望次数tmp:1/[(C(n,2)+n)-cntzerointerval]
tmp*f[][][]*符号
贡献到ans里
或者更巧妙的做法是
钦定n+1位选择1
然后统计f[n+1][j][0/1]即可。当然多处理一个51,还要把0/1的状态奇偶性变过来。
总结:
抓住等概率的条件
抓住相同的S个数和方案
批量处理
喜大普奔
(置换批量处理的思想也是这样)