日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF1139D-Steps to One【期望dp,莫比乌斯反演】

發(fā)布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF1139D-Steps to One【期望dp,莫比乌斯反演】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/CF1139D


題目大意

不停的在表格中填下1~m1\sim m1m中隨機(jī)一個數(shù),直到所有數(shù)的gcd=1gcd=1gcd=1為止,求期望數(shù)的個數(shù)。


解題思路

設(shè)fnf_nfn?表示現(xiàn)在gcdgcdgcdnnn時的期望個數(shù)。那么有轉(zhuǎn)移方程fn=∑i=1mfgcd(i,n)m+1f_n=\frac{\sum_{i=1}^mf_{gcd(i,n)}}{m}+1fn?=mi=1m?fgcd(i,n)??+1
為了方便,我們先把其中?mn?\lfloor\frac{m}{n}\rfloor?nm??gcd(i,n)=ngcd(i,n)=ngcd(i,n)=n的提出來,我們在后面的計算中均以其為000
如果我們求出一個函數(shù)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]那么方程就可以轉(zhuǎn)換成方便的形式,因為顯然只有x∣nx|nxnh(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)=xd?h(d)=?xm???[xn]
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=xn?h(x)fx?=xn?fx?xy?H(y)μ(xy?)=xn?fx?xy,yn??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?yn??xm??xy?μ(xy?)fx?
后面那個做完一個fff就預(yù)處理一個,然后跟著轉(zhuǎn)移即可。

時間復(fù)雜度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; }

總結(jié)

以上是生活随笔為你收集整理的CF1139D-Steps to One【期望dp,莫比乌斯反演】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。