题意:

给你一个数n每一步这个数可以变为他的因子,直到这个数变为1,求n变到1的期望步数。

分析:

dp[i],表示i变为1的期望步数,dp[1]=0,dp[n]是答案。

dp[i]=sum(dp[j])/tmp+1;(j是i的因子,tmp是i因子的个数

化简即可

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define N 100001
#define read freopen("in.txt", "r", stdin)
const ll  INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod =  1000000007;
double dp[100010];
int n;
void solve(){dp[1]=0.0;for(int i=2;i<N;++i){dp[i]=0.0;int tmp=1;for(int j=1;j*j<=i;++j){if(i%j==0){tmp++;dp[i]+=dp[j];if(j!=(i/j)&&j!=1){tmp++;dp[i]+=dp[i/j];}}}dp[i]+=tmp;dp[i]/=(tmp-1);}
}
int main()
{int t,cas=0;scanf("%d",&t);solve();while(t--){scanf("%d",&n);printf("Case %d: %lf\n",++cas,dp[n]);}
return 0;
}

转载于:https://www.cnblogs.com/zsf123/p/4738859.html

LightOJ 1038-Race to 1 Again(概率dp)相关推荐

  1. LightOJ 1395 A Dangerous Maze (II) (概率dp)

    题意:给出n扇门,每扇门都给出一个数x,若为正数,则表示在x时间后走出迷宫,若为负数,则表示在x时间后回到起点,你会记得最后k扇你走过的门(不会再走),求最后的期望时间. 题解:概率dp 这题的进阶版 ...

  2. LightOJ 1079 Just another Robbery【概率DP】

    题目: As Harry Potter series is over, Harry has no job. Since he wants to make quick money, (he wants ...

  3. LightOJ - 1038 Race to 1 Again 基础期望概率 dp

    传送门 刚刚学习期望&概率 我们设数X的期望改变次数为P[X] 如果要求X的期望,很容易想到找x的因子; 可以得到下式  ,cnt为X因子个数,ai为X的因子 可以这么理解,当因子ai为1时, ...

  4. 【LightOJ - 1030】Discovering Gold(概率dp,数学期望,期望的线性性)

    题干: You are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the ca ...

  5. LightOJ 1395 A Dangerous Maze (II) 期望DP

    A Dangerous Maze (II) LightOJ - 1395 这个题是 LightOJ 1027 A Dangerous Maze 基础概率DP 的加强版. 有 nnn 个门,其中有些门通 ...

  6. Discovering Gold LightOJ - 1030[概率dp或者记忆化搜索]

    题目大意:有一个[1,n][1,n][1,n]的数轴,数轴上的每个对应位置上都有金矿,你初始位置是1,然后你每次都会投色子决定你下一步跳到哪里,如果你跳出了nnn,那么你就要重新投.问你跳到nnn的时 ...

  7. LightOJ 1079 Just another Robbery (概率dp+背包)

    题意:有n家银行,每家银行都有一定数量的钱和被抓概率,给出自己被抓概率的上限,求能获得最多的钱. 题解:概率dp+背包 用dp[]dp[]dp[]表示获得这么多钱被抓的概率.获得同等钱的概率要尽可能小 ...

  8. 2018.09.01 poj3071Football(概率dp+二进制找规律)

    传送门 概率dp简单题. 设f[i][j]表示前i轮j获胜的概率. 如果j,k能够刚好在第i轮相遇,找规律可以发现j,k满足: (j−1)>>(i−1)(j−1)>>(i−1) ...

  9. 【原创】概率DP总结 by kuangbin

    概率DP主要用于求解期望.概率等题目. 转移方程有时候比较灵活. 一般求概率是正推,求期望是逆推.通过题目可以体会到这点. 首先先推荐几篇参考的论文: <信息学竞赛中概率问题求解初探> & ...

最新文章

  1. SAP BMBC报表不能显示批次分类视图里的特性值
  2. 单元测试试图告诉我们关于 Activity 的什么事情:第二部分
  3. 深耕“有温度”的金融服务:平安银行“健康财富节”背后的人本主义
  4. 很酷的一套 Flex/AIR 皮肤 (KingnareStyle)
  5. boost::math::bernoulli_b2n用法的测试程序
  6. 这才是真正的Git——Git内部原理揭秘!
  7. C语言课后习题(39)
  8. 【Elasticsearch】Elasticsearch 中增加分片数量,聚合一定会变快吗?
  9. gx works2 版本号_GX Works2下载 GX Works2(PLC编程软件) v1.89C 中文安装版(附序列号+安装教程) 下载-脚本之家...
  10. w3school和w3cschool两个网站有什么关系和区别?(转)
  11. Java—企业微信网页版登陆认证详解
  12. gre 填空64-77
  13. 计算机移动硬盘无法访问,移动硬盘无法访问参数不正确的解决方法
  14. 运行期报“#FFxxxxxx”不是属性“xxxxx”的有效值
  15. JS、阻止 a 标签的默认点击事件,阻止默认的所有事件
  16. Unet++语义分割网络(网络结构分析+代码分析)
  17. Nginx如何均衡负载
  18. Netty 4.0 实现心跳检测和断线重连
  19. HDFS java API操作
  20. 12306抢票,极限并发带来的思考

热门文章

  1. java calendar 时分秒_Java中Calendar类的常用方法(对时间进行计算的类)
  2. Python Excel到JSON的转换
  3. linux导出日志命令_Linux中的导出命令
  4. python 字符串 变量_Python检查变量是字符串
  5. Android Realm数据库
  6. node.js 创建服务器_Node.js HTTP软件包–创建HTTP服务器
  7. 如何在C / C ++中使用continue语句
  8. C++教程:C++开发语言可以做些什么?
  9. 人工智能发展中面临的问题有哪些?
  10. 开课吧Java课堂:特殊的字符串如何操作,字符串如何连接