Problem. J

题意简述:

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

数据范围:

\(n\le10^5,a_i\le10^9\)

解法:

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

posted @ 2020-04-22 21:41  Shiina_Mashiro  阅读(166)  评论(0编辑  收藏  举报