CF1139D-Steps to One【期望dp,莫比乌斯反演】
正題
題目鏈接:https://www.luogu.com.cn/problem/CF1139D
題目大意
不停的在表格中填下1~m1\sim m1~m中隨機一個數,直到所有數的gcd=1gcd=1gcd=1為止,求期望數的個數。
解題思路
設fnf_nfn?表示現在gcdgcdgcd為nnn時的期望個數。那么有轉移方程fn=∑i=1mfgcd(i,n)m+1f_n=\frac{\sum_{i=1}^mf_{gcd(i,n)}}{m}+1fn?=m∑i=1m?fgcd(i,n)??+1
 為了方便,我們先把其中?mn?\lfloor\frac{m}{n}\rfloor?nm??個gcd(i,n)=ngcd(i,n)=ngcd(i,n)=n的提出來,我們在后面的計算中均以其為000。
 如果我們求出一個函數h(x)=∑i=1m[gcd(i,n)==x]h(x)=\sum_{i=1}^m[gcd(i,n)==x]h(x)=∑i=1m?[gcd(i,n)==x]那么方程就可以轉換成方便的形式,因為顯然只有x∣nx|nx∣n時h(x)h(x)h(x)才有值。
考慮如何求這個hhh,直接上莫反H(x)=∑x∣dh(d)=?mx??[x∣n]H(x)=\sum_{x|d}h(d)=\lfloor\frac{m}{x}\rfloor*[x|n]H(x)=x∣d∑?h(d)=?xm???[x∣n]
 ans=∑x∣nh(x)fx=∑x∣nfx∑x∣yH(y)μ(yx)=∑x∣nfx∑x∣y,y∣n?mx?μ(yx)ans=\sum_{x|n}h(x)f_x=\sum_{x|n}f_x\sum_{x|y}H(y)\mu(\frac{y}{x})=\sum_{x|n}f_x\sum_{x|y,y|n}\lfloor\frac{m}{x}\rfloor\mu(\frac{y}{x})ans=x∣n∑?h(x)fx?=x∣n∑?fx?x∣y∑?H(y)μ(xy?)=x∣n∑?fx?x∣y,y∣n∑??xm??μ(xy?)
 這個很麻煩計算,把yyy提出來
 ?∑y∣n?mx?∑x∣yμ(yx)fx\Rightarrow\sum_{y|n}\lfloor\frac{m}{x}\rfloor\sum_{x|y}\mu(\frac{y}{x})f_x?y∣n∑??xm??x∣y∑?μ(xy?)fx?
 后面那個做完一個fff就預處理一個,然后跟著轉移即可。
時間復雜度O(mm)O(m\sqrt m)O(mm?)
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll N=1e5+10,P=1e9+7; ll m,cnt,pri[N],mu[N],f[N],g[N]; bool v[N]; ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans; } void prime(){mu[1]=1;for(ll i=2;i<=m;i++){if(!v[i])pri[++cnt]=i,mu[i]=-1;for(ll j=1;j<=cnt&&i*pri[j]<=m;j++){v[i*pri[j]]=1;if(i%pri[j]==0)break;mu[i*pri[j]]=mu[i]*mu[pri[j]];}}return;} signed main() {scanf("%lld",&m);prime();ll ans=f[1]=g[1]=1;for(ll n=2;n<=m;n++){for(ll i=1;i*i<=n;i++)if(n%i==0){if(i*i!=n)(g[n]+=mu[i]*f[n/i]%P)%=P;(g[n]+=mu[n/i]*f[i]%P)%=P;}for(ll i=1;i*i<=n;i++)if(n%i==0){if(i*i!=n)(f[n]+=(m/(n/i))*g[n/i]%P)%=P;(f[n]+=(m/i)*g[i]%P)%=P;}f[n]=(f[n]+m)%P*power(m-m/n,P-2)%P;ans=(ans+f[n])%P;(g[n]+=f[n])%=P;}ans=ans*power(m,P-2)%P;printf("%lld\n",(ans+P)%P);return 0; }總結
以上是生活随笔為你收集整理的CF1139D-Steps to One【期望dp,莫比乌斯反演】的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 我的第一块便携屏我的第一块便携屏怎么用
- 下一篇: P3911-最小公倍数之和【莫比乌斯反演
