Hello 2019 D 素因子贡献法计算期望 + 概率dp + 滚动数组
https://codeforces.com/contest/1097/problem/D
题意
给你一个n和k,问n经过k次操作之后留下的n的期望,每次操作n随机变成一个n的因数
题解
- 概率dp计算出每个素因子留下的概率,乘以这个素因子的值就是这个素因子的贡献期望
- 定义\(dp[i][j]\)为第i次操作后剩下j个素因子的概率,概率dp顺着推
- \(dp[i][j]->dp[i+1][k](k<=j)\)
- \(dp[i+1][k]+=dp[i][j]\frac{1}{j+1}(k<=j)\)
- \(ans=\sum^{cnt}_{i=1}\sum^{num[i]}_{j=0}pr[i]^j*dp[k][j]\)
- 二维滚动数组滚掉一维
代码
#include<bits/stdc++.h>
#define P 1000000007
#define M 32000000
#define MAXN 100
#define ll long long
using namespace std;
ll dp[2][MAXN],inv[MAXN],n,ans=1;
int vi[M],sz,k,pr[M];
void sieve(){
inv[0]=inv[1]=1;
for(int i=2;i<MAXN;i++)inv[i]=(P-P/i)*inv[P%i]%P;
for(ll i=2;i<M;i++){
if(!vi[i])pr[++sz]=i;
for(int j=1;j<=sz&&pr[j]*i<M;j++){
vi[pr[j]*i]=1;
if(i%pr[j]==0)break;
}
}
}
int main(){
sieve();
cin>>n>>k;
for(int i=1;i<=sz&&pr[i]<=n;i++){
int cnt=0;
if(n%pr[i])continue;
while(n%pr[i]==0){
n/=pr[i];
cnt++;
}
memset(dp,0,sizeof(dp)); //
dp[0][cnt]=1;
int st=0;
for(int j=0;j<k;j++){
memset(dp[st^1],0,sizeof(dp[st^1]));
for(int p=0;p<=cnt;p++){
for(int q=0;q<=p;q++){
dp[st^1][q]+=dp[st][p]*inv[p+1]%P;
dp[st^1][q]%=P;
}
}
st^=1;
}
ll mul=1,tp=0;
for(int j=0;j<=cnt;j++){
tp+=dp[st][j]*mul%P;
tp%=P;
mul=mul*pr[i]%P;
}
ans=ans*tp%P; //
}
if(n>1){
memset(dp,0,sizeof(dp));
dp[0][1]=1;
int st=0;
for(int j=0;j<k;j++){
memset(dp[st^1],0,sizeof(dp[st^1]));
for(int p=0;p<=1;p++){
for(int q=0;q<=p;q++){
dp[st^1][q]+=dp[st][p]*inv[p+1]%P;
dp[st^1][q]%=P;
}
}
st^=1;
}
ll mul=1,tp=0;
for(int j=0;j<=1;j++){
tp+=dp[st][j]*mul%P;
tp%=P;
mul=mul*n%P;
}
ans=ans*tp%P;
}
cout<<ans;
}
Hello 2019 D 素因子贡献法计算期望 + 概率dp + 滚动数组的更多相关文章
- 【BZOJ 3652】大新闻 数位dp+期望概率dp
并不难,只是和期望概率dp结合了一下.稍作推断就可以发现加密与不加密是两个互相独立的问题,这个时候我们分开算就好了.对于加密,我们按位统计和就好了;对于不加密,我们先假设所有数都找到了他能找到的最好的 ...
- HDU 3853 期望概率DP
期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每一个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] , 右移:[x][y ...
- 【BZOJ 3811】玛里苟斯 大力观察+期望概率dp+线性基
大力观察:I.从输出精准位数的约束来观察,一定会有猫腻,然后仔细想一想,就会发现输出的时候小数点后面不是.5就是没有 II.从最后答案小于2^63可以看出当k大于等于3的时候就可以直接搜索了 期望概率 ...
- 【NOIP模拟赛】黑红树 期望概率dp
这是一道比较水的期望概率dp但是考场想歪了.......我们可以发现奇数一定是不能掉下来的,因为若奇数掉下来那么上一次偶数一定不会好好待着,那么我们考虑,一个点掉下来一定是有h/2-1个红(黑),h/ ...
- BZOJ1415: [Noi2005]聪聪和可可 最短路 期望概率dp
首先这道题让我回忆了一下最短路算法,所以我在此做一个总结: 带权: Floyed:O(n3) SPFA:O(n+m),这是平均复杂度实际上为O(玄学) Dijkstra:O(n+2m),堆优化以后 因 ...
- 期望概率DP
期望概率DP 1419: Red is good Description 桌面上有\(R\)张红牌和\(B\)张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 ...
- 【BZOJ 2553】[BeiJing2011]禁忌 AC自动机+期望概率dp
我一开始想的是倒着来,发现太屎,后来想到了一种神奇的方法——我们带着一个既有期望又有概率的矩阵,偶数(2*id)代表期望,奇数(2*id+1)代表概率,初始答案矩阵一列,1的位置为1(起点为0),工具 ...
- UVa 11427 Expect the Expected (数学期望 + 概率DP)
题意:某个人每天晚上都玩游戏,如果第一次就䊨了就高兴的去睡觉了,否则就继续直到赢的局数的比例严格大于 p,并且他每局获胜的概率也是 p,但是你最玩 n 局,但是如果比例一直超不过 p 的话,你将不高兴 ...
- 【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学
神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的 ...
随机推荐
- guava(三)字符串处理 Joiner Splitter CharMatcher
一.Joiner 拼接字符串 1.join 拼接集合中的元素 System.out.println(Joiner.on(";").join(Ints.asList(1,2,3))) ...
- JVM-基本操作
1.我们为什么要对jvm做优化?在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应服务器的CPU负载突 ...
- Java连载20-复习、switch语句
一.复习 1.标识符(自己定义的,下划线.美元符号) 2.驼峰命名(变量名,方法名首字母小写) 3.关键字(就是固定的那几个) 4.字面值(数据.有类型.八种基本类型从小到大,byte\char=sh ...
- linux系统中启动daytime服务
环境:vmware下面的cetos6 1. 进入/etc/xinetd.d/目录下,查看是否存在daytime服务,若不存在,则须安装: 执行命令:yum install xinetd 该命令执行后会 ...
- 【转载】百度百科:FusionCube超融合
[转载]百度百科:FusionCube超融合 华为FusionCube融合基础设施一体机(Huawei FusionCube Converged Infrastructure)是华为公司IT产品线云计 ...
- ios浏览器调试踩坑(1)----mescroll.js和vue-scroller
主要记录在ios浏览器出现触摸无限加载的情况 使用vue-scroller和mescroll.js/mescroll.vue先踩ios浏览器默认滑动会影响mescroll的方法调用. 首先给公共js加 ...
- 尝试在iOS上使用gRPC
简介 gRPC,google的远程过程调用框架,传输协议使用 HTTP2, 序列化协议使用 protobuf.gRPC 使用 HTTP2 传输协议传输 protobuf 序列化的二进制数据,有极高的效 ...
- SAP MM 公司间STO里外向交货单与内向交货单里序列号对应关系
SAP MM 公司间STO里外向交货单与内向交货单里序列号对应关系 笔者所在的A项目,后勤模块里有启用HU管理,序列号管理,批次管理等功能,以实现各个业务场景下的追溯. 公司间转储订单流程里,如果是整 ...
- WPF 枚举使用
1.model class JX_Unit { public enum SumUnit { KW = 1, L = 2, Kt = 3, } } 2.viewModel public string w ...
- Spring事务部分知识点整理
目录 1.数据库事务基础概念 2.Spring中注解事务的使用 3.Spring事务使用注意场景 1.数据库事务基础概念 数据库事务是对数据库一次一系列的操作组成的单元,可以包含增删改查或者只有单 ...