题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20869

【思路】

DP+期望。

设f[x]表示从x转移到1的期望操作次数,则有:

f[x]=1+f[x]*(1-g[x]/p[x])+sigma(f[x][y])/p[x]

进一步为:

f[x]=(sigma(f[x/y])+p[x])/g[x]

其中p[x]表示1..x的素数个数,p[x]表示素数中可以整除x的个数。

  保留vis可以节约时间。

【代码】

 #include<cstdio>
#include<cmath>
#include<vector>
#include<cstring>
using namespace std; typedef long long ll;
const int N = 1e6+; double f[N];
vector<int> ps;
int n,vis[N],isp[N]; void get_primes() {
memset(isp,,sizeof(isp));
for(int i=;i<=N;i++) if(!isp[i]) {
ps.push_back(i);
if((ll)i*i<=(ll)N)for(int j=i*i;j<=N;j+=i) isp[j]=;
}
} double dp(int x) {
if(x==) return ;
if(vis[x]) return f[x];
vis[x]=;
f[x]=0.0; int g=,p=;
for(int i=;i<ps.size() && ps[i]<=x;i++) {
int y=ps[i]; p++;
if(x%y==) g++ , f[x]+=dp(x/y);
}
f[x]=(f[x]+p)/g;
return f[x];
} int main() {
get_primes();
int T,kase=;
scanf("%d",&T);
while(T--) {
scanf("%d",&n);
printf("Case %d: %.10lf\n",++kase,dp(n));
}
return ;
}

UVA 11762 Race to 1(记忆化+期望)的更多相关文章

  1. UVA - 11762 - Race to 1 记忆化概率

    Dilu have learned a new thing about integers, which is - any positive integer greater than 1 can bed ...

  2. UVA 11762 - Race to 1(概率)

    UVA 11762 - Race to 1 题意:给定一个n,每次随即选择一个n以内的质数,假设不是质因子,就保持不变,假设是的话.就把n除掉该因子,问n变成1的次数的期望值 思路:tot为总的质数. ...

  3. UVa 11762 Race to 1 (数学期望 + 记忆化搜索)

    题意:给定一个整数 n ,然后你要把它变成 1,变换操作就是随机从小于等于 n 的素数中选一个p,如果这个数是 n 的约数,那么就可以变成 n/p,否则还是本身,问你把它变成 1 的数学期望是多少. ...

  4. UVa 11762 - Race to 1

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...

  5. BZOJ4832: [Lydsy1704月赛]抵制克苏恩(记忆化&期望)

    Description 小Q同学现在沉迷炉石传说不能自拔.他发现一张名为克苏恩的牌很不公平.如果你不玩炉石传说,不必担心,小Q 同学会告诉你所有相关的细节.炉石传说是这样的一个游戏,每个玩家拥有一个 ...

  6. UVa 10599【lis dp,记忆化搜索】

    UVa 10599 题意: 给出r*c的网格,其中有些格子里面有垃圾,机器人从左上角移动到右下角,只能向右或向下移动.问机器人能清扫最多多少个含有垃圾的格子,有多少中方案,输出其中一种方案的格子编号. ...

  7. UVa 1629 切蛋糕(记忆化搜索)

    https://vjudge.net/problem/UVA-1629 题意: 有一个n行m列的网格蛋糕上有一些樱桃.每次可以用一刀沿着网格线把蛋糕切成两块,并且只能直切不能拐弯.要求最后每一块蛋糕上 ...

  8. UVa 10118 Free Candies (记忆化搜索+哈希)

    题意:有4堆糖果,每堆有n(最多40)个,有一个篮子,最多装5个糖果,我们每次只能从某一堆糖果里拿出一个糖果,如果篮子里有两个相同的糖果, 那么就可以把这两个(一对)糖果放进自己的口袋里,问最多能拿走 ...

  9. [uva 11762]Race to 1[概率DP]

    引用自:http://hi.baidu.com/aekdycoin/item/be20a91bb6cc3213e3f986d3,有改动 题意: 已知D, 每次从[1,D] 内的所有素数中选择一个Ni, ...

随机推荐

  1. Android工程师必会做的20道题

    一.单选题     (共7道题,每题5分) 1.使用AIDL完成远程service方法调用下列说法不正确的是 A.aidl对应的接口名称不能与aidl文件名相同 B.aidl的文件的内容类似java代 ...

  2. 案例:latch: cache buffers chains event tuning

    前两天对oracle数据库(single instance)进行了迁移升级从10.2.0.4 升到11.2.0.3,有一个项目迁完后第二天,cpu负载升到了130更高(16cpus). 向用户询问后使 ...

  3. CSS Padding(填充)

    CSS Padding(填充)属性定义元素边框与元素内容之间的空间. Padding(填充) 当元素的 Padding(填充)(内边距)被清除时,所"释放"的区域将会受到元素背景颜 ...

  4. jQuery慢慢啃之事件对象(十一)

    1.event.currentTarget//在事件冒泡阶段中的当前DOM元素 $("p").click(function(event) { alert( event.curren ...

  5. Qt Linguist的使用

    国际化的英文表述为Internationalization,通常简写为I18N,QT Linguist是一个将“tr(“”)”引号中的语言翻译成另外语言的工具 1. 创建.ts文件 在Creator中 ...

  6. 原生javascript操作class-元素查找-元素是否存在-添加class-移除class

    //判断元素是否有classfunction hasClass(ele, cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\ ...

  7. 添加标签2 jquery 和JS

    TAG添加标签 做了个方法方便调用 一.JS版本 <!DOCTYPE html> <html lang="en"> <head> <met ...

  8. php练习——打印半金字塔、金字塔、空心金字塔、菱形、空心菱形

    半金字塔 金字塔 空心金字塔 菱形     空心菱形

  9. php 函数 array_slice

    array_slice array_slice -- 从数组中取出一段 <?php$input = array("a", );      // returns "c ...

  10. POJ 3041 Asteroids 最小点覆盖 == 二分图的最大匹配

    Description Bessie wants to navigate her spaceship through a dangerous asteroid field in the shape o ...