蒟蒻数学渣呀,根本不会做。

解法是参考 https://blog.csdn.net/xs18952904/article/details/88785210 这位大佬的。

状态的设计和转移如上面博客一样:dp[i]代表当前序列的gcd为i的期望长度。

那么可以写出状态转移方程:dp[i]=(1+(x/m)∑(j|i,j≠i)dp[j]) / (1-(m/i)/m) (写得有点乱,其实和上面大佬的一样的)

这里要说一下的是 x=∑(t=1,t<=m) [ gcd(t,i)==j ]  就是怎么求1<=t<=m 中gcd(t,i)=j的t的个数。

这里考虑莫比乌斯反演:

x=∑(t=1,t<=m)[gcd(t,i)=j]

把j提出来 x=∑(t=1,t<=m/j) [gcd(t,i/j)=1]

代入莫比乌斯性质:x=∑(t=1,t<=m) ∑(d|gcd(t,i/j)) μ(d)

套路,改为枚举d : x=(m/jd)(d|(i/j)) μ(d)

这样就可以求出x了,这道题就可以解决了。

时间复杂度为O(m*log(m)*因子个数)

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=1e5+;
const int MOD=1e9+;
LL m,mu[N],v[N],dp[N]; LL power(LL x,LL p) {
LL ret=;
for (;p;p>>=) {
if (p&) ret=(ret*x)%MOD;
x=(x*x)%MOD;
}
return ret;
} vector<int> fac[N];
void prework() {
for (int i=;i<=m;i++)
for (int j=;j<=m/i;j++)
fac[i*j].push_back(i);
for (int i=;i<=m;i++) mu[i]=,v[i]=;
for (int i=;i<=m;i++) {
if (v[i]) continue;
mu[i]=-;
for (int j=*i;j<=m;j+=i) {
v[j]=;
if ((j/i)%i==) mu[j]=;
else mu[j]*=-;
}
}
} LL calc(LL i,LL j) {
LL ret=;
for (int k=;k<fac[i/j].size();k++) {
int d=fac[i/j][k];
LL tmp=(mu[d]+MOD)%MOD*(m/j/d)%MOD;
ret=(ret+tmp)%MOD;
}
return ret;
} int main()
{
cin>>m;
prework();
LL ans=; dp[]=;
for (int i=;i<=m;i++) {
dp[i]=;
for (int j=;j<fac[i].size();j++) {
if (fac[i][j]==i) continue;
LL x=calc(i,fac[i][j]);
dp[i]=(dp[i]+x*dp[fac[i][j]]%MOD)%MOD;
}
dp[i]=dp[i]*power(m,MOD-)%MOD;
dp[i]=(dp[i]+)%MOD;
dp[i]=(dp[i]*m%MOD*power(m-m/i,MOD-))%MOD;
ans=(ans+dp[i]*power(m,MOD-)%MOD)%MOD;
}
cout<<ans<<endl;
return ;
}

Codeforces - 1139D - Steps to One (概率DP+莫比乌斯反演)的更多相关文章

  1. codeforces#1139D. Steps to One (概率dp+莫比乌斯反演)

    题目链接: http://codeforces.com/contest/1139/problem/D 题意: 在$1$到$m$中选择一个数,加入到一个初始为空的序列中,当序列的$gcd$和为$1$时, ...

  2. Codeforces.1139D.Steps to One(DP 莫比乌斯反演)

    题目链接 啊啊啊我在干什么啊.怎么这么颓一道题做这么久.. 又记错莫比乌斯反演式子了(╯‵□′)╯︵┻━┻ \(Description\) 给定\(n\).有一个初始为空的集合\(S\).令\(g\) ...

  3. CodeForces 24D Broken robot (概率DP)

    D. Broken robot time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...

  4. CodeForces 540D--Bad Luck Island(概率DP)

    貌似竟然是我的第一道概率DP.. 手机码代码真不舒服.... /************************************************ Memory: 67248 KB Ti ...

  5. codeforces 148D Bag of mice(概率dp)

    题意:给你w个白色小鼠和b个黑色小鼠,把他们放到袋子里,princess先取,dragon后取,princess取的时候从剩下的当当中任意取一个,dragon取得时候也是从剩下的时候任取一个,但是取完 ...

  6. Codeforces 809E - Surprise me!(虚树+莫比乌斯反演)

    Codeforces 题目传送门 & 洛谷题目传送门 1A,就 nm 爽( 首先此题一个很棘手的地方在于贡献的计算式中涉及 \(\varphi(a_ia_j)\),而这东西与 \(i,j\) ...

  7. Codeforces 1139D Steps to One dp

    Steps to One 啊, 我要死了, 这种垃圾题居然没写出来, 最后十分钟才发现错在哪. 不知道为什么我以为 对于一个数x , 除了它的因子和它的倍数都是和它互质的, 我脑子是抽了吗? 随便瞎d ...

  8. Codeforces 148D Bag of mice 概率dp(水

    题目链接:http://codeforces.com/problemset/problem/148/D 题意: 原来袋子里有w仅仅白鼠和b仅仅黑鼠 龙和王妃轮流从袋子里抓老鼠. 谁先抓到白色老师谁就赢 ...

  9. CodeForces 148D-Bag of mice(概率dp)

    题意: 袋子里有w个白球b个黑球,现在两个人轮流每次取一个球(不放回),先取到白球的获胜,当后手取走一个球时,袋子里的球会随机的漏掉一个,问先手获胜的概率. 分析: dp[i][j]表示袋子中i个白球 ...

随机推荐

  1. shell使用lftp同步yum仓库

  2. org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query

    原因: 这个问题的解决方案很简单,主要是因为数据库中不存在相关的表或者列. org.springframework.dao.InvalidDataAccessApiUsageException: Pa ...

  3. SQLRecoverableException: I/O Exception: Connection reset

    https://stackoverflow.com/questions/6110395/sqlrecoverableexception-i-o-exception-connection-reset T ...

  4. ubuntu oracle数据库18c安装

    一.官网下载linux两个zip包 二.byqKx8a2tWcgBHb

  5. Rectangle类详解

    一,概括: 乍一看,可能感觉是一个矩形类,矩形类就是画一个长方形吗??这是我一开始见到这个类的感觉. 其实不是的Rectangle是一个“区域”类,它的最大作用就是定义一个矩形的区域,如果问为什么是矩 ...

  6. docker 运行jenkins及vue项目与springboot项目(二.docker运行jenkins为自动打包运行做准备)

    docker 运行jenkins及vue项目与springboot项目: 一.安装docker 二.docker运行jenkins为自动打包运行做准备 三.jenkins的使用及自动打包vue项目 四 ...

  7. djangorestframework-jwt 分页器 三种

    数据准备 # models class Teacher(models.Model): name = models.CharField(max_length=32) salary = models.De ...

  8. 芒果学院Python高级开发课程

  9. JMeter ServerAgent服务器资源监控插件

    本文介绍对Linux服务器的服务进行压测时,使用jmeter serverAgent插件监控服务器资源. 1.插件准备 所需插件: JMeterPlugins-Extras.jar JMeterPlu ...

  10. rabbitmq集群-2

    rabbitmq集群 原文地址:https://www.cnblogs.com/lion.net/p/5725474.html rabbitmq集群介绍 rabbitmq有3种模式,但集群模式是2种. ...