Problem. J

题意简述:

(n)个正整数(a_i),先手后手轮流选出一个数,当选出来的所有的数的(gcd)(1)时最后一个行动的人失败。
如果两个人都随机选择一个未被选的数,那么先手获胜的概率是多少?

数据范围:

(nle10^5,a_ile10^9)

解法:

(q_i)表示选了(i)个数后结束游戏的概率。
注意到先手获胜当且仅当选了偶数个数且游戏结束,因此答案为(sumlimits_{i=1}^{lfloorfrac n2 floor}q_{2i})
考虑容斥转化,设(p_i)表示选了(i)个数后仍未结束游戏的概率,那么(q_i=p_{i-1}-p_i)
(g_{i,d})表示选出(i)个数且(gcd)(d)的概率,那么(p_i=sumlimits_{d=2}^{+infty}g_{i,d})
继续容斥转化,设(f_{i,d})表示选出(i)个数,且选的数都是(j)的倍数的概率,那么(f_{i,d}={cnt_dchoose i}frac{i!}{n^{underline i}})
其中(cnt_i=sumlimits_{j=1}^n[i|a_j]),可以(O(n))求出(t_i=sumlimits_{j=1}^n[a_j=i])(O(nlog n))求出。
不难发现(f_{i,d}=sumlimits_{d|t}g_{i,t}),根据Mobiüs反演(g_{i,d}=sumlimits_{d|t}f_{i,t}mu(frac td))
那么(p_i=sumlimits_{d=2}^{+infty}g_{i,d}=sumlimits_{d=2}^{+infty}sumlimits_{d|t}f_{i,t}mu(frac td)=sumlimits_{t=2}^{+infty}f_{i,t}sumlimits_{d|t}[d e 1]mu(frac td)=sumlimits_{t=2}^{+infty}f_{i,t}(epsilon(t)-mu(t))=-sumlimits_{t=2}^{+infty}f_{i,t}mu(t))
注意到(f_{i,d} e 0Leftrightarrow iin[1,cnt_d]),因此计算(f,p)的时间复杂度都是(O(sumlimits_{i=2}^ncnt_i)=O(sumlimits_{i=1}^nsigma_0(a_i))=O(nsigma_0(max(a))))
还有线性筛(mu)的时间为(O(max(a)))
总的时间复杂度为(O(n(log n+sigma_0(max(a)))+max(a)))

原文地址:https://www.cnblogs.com/cjoierShiina-Mashiro/p/12756198.html