HDU 4624 【期望】

最近电脑老死机,而且都是我东西快写完没有保存的时候。。。w(゜Д゜)w

题目大意:有 n 个球,每次把一个区间染成黑色,求期望多少次把所有球染黑

设p(i)为 i 次操作后还有白球的概率,则答案为

∑i=0∞p[i]

现在要求p[i]

先假设剩下的球有 k 个,子区间数为 A,共有n(n+1)个子区间,可得p=An(n+1)

因为有∑∞i=0pi=11?p,再配上容斥的系数,贡献为(?1)k?111?p

考虑到只跟区间个数和白球奇偶性有关,就可以DP做啦~

这道题还有一点就是要保留15位小数,所以窝写了发python(其中有个错,就是定义超过一维数组的时候不能写a[[0]*M]*N,而是应写成a[[0 for x in range(M)]for y in range(N)])

结果没有python…(真是一个悲伤的故事…

转java QAQ(换行要写成 \r\n,只写 \n 会PE…

import java.util.Scanner;
import java.io.*;
import java.math.BigDecimal;

public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        long [][][]f = new long[55][2][2600];
        BigDecimal []E = new BigDecimal[55];
        for (int i = 0;i < 55;i ++)
            for (int j = 0;j < 2;j ++)
                for (int k = 0;k < 2600;k ++) f[i][j][k] = new Long(0);
        for (int i = 0;i < 55;i ++) E[i] = new BigDecimal("0");
        f[0][0][0] = (long)1;
        for (int i = 0;i <= 50;i ++)
            for (int j = 0;j <= i * (i + 1) / 2;j ++)
                for (int k = i + 1;k <= 50;k ++)
                {
                    f[k][0][j + (k - i) * (k - i - 1) / 2] += f[i][1][j];
                    f[k][1][j + (k - i) * (k - i - 1) / 2] += f[i][0][j];
                }
        for (int i = 1;i <= 50;i ++)
            for (int j = 0;j <= i;j ++)
                for (int k = 0;k <= j * (j + 1) / 2;k ++)
                {
                    if ((k + (i - j) * (i - j + 1) / 2) / (i * (i + 1) / 2) == 1) continue;
                    BigDecimal p = new BigDecimal("1.0"),a = new BigDecimal(k + (i - j + 1) * (i - j) / 2),b = new BigDecimal (i * (i + 1) / 2);
                    p = p.subtract(a.divide(b,50,BigDecimal.ROUND_HALF_UP));
                    BigDecimal temp = new BigDecimal(f[j][1][k] - f[j][0][k]);
                    E[i] = E[i].add(temp.divide(p,50,BigDecimal.ROUND_HALF_UP));
                }
        int T = in.nextInt(),x;
        for (int i = 1;i <= T;i ++)
        {
            x = in.nextInt();
            System.out.printf("%.15f\r\n",E[x]);
        }
    }
}
时间: 2024-08-07 01:56:23

HDU 4624 【期望】的相关文章

HDU 3853 期望概率DP

期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] ,  右移:[x][y]->[x][y+1]=p[x][y][1];  左移:[x][y]->[x+1][y]=p[x][y][2]; 问最后走到[r,c]的期望 dp[i][j]为从[i][j]点走到[r][c]的期望 有方程: dp[i][j]=    (dp[i][j]+2)*p[i][j][0]  +   (dp

HDU 4035 期望dp

这道题站在每个位置上都会有三种状态 死亡回到起点:k[i] 找到出口结束 e[i] 原地不动 p[i] k[i]+e[i]+p[i] =1; 因为只给了n-1条路把所有都连接在一起,那么我们可以自然的把这张图看成一个树型结构 根据作为父亲节点和叶子节点作为区分 进行推导 详情可参考:http://blog.csdn.net/morgan_xww/article/details/6776947/ 1 #include <cstdio> 2 #include <cstring> 3 #

HDU 4405 飞行棋上的数学期望

突然发现每次出现有关数学期望的题目都不会做,就只能找些虽然水但自己还是做不出的算数学期望的水题练练手了 题目大意: 从起点0点开始到达点n,通过每次掷色子前进,可扔出1,2,3,4,5,6这6种情况,扔到几前进几,当然对应飞行通道可以通过x直达一点y,x<y,计算到达n点或超过n 点要扔色子的次数的数学期望 从某一点 i 扔完色子可到达 i+1,i+2,i+3,i+4,i+5,i+6这6个点,令dp[i]为到达末尾的数学期望 那么到达之后6个点的数学期望是一样的,那么dp[i]=dp[i+1]*

hdu 2262 高斯消元求期望

Where is the canteen Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1070    Accepted Submission(s): 298 Problem Description After a long drastic struggle with himself, LL decide to go for some

HDU 4870 Rating(概率、期望、推公式) &amp;&amp; ZOJ 3415 Zhou Yu

其实zoj 3415不是应该叫Yu Zhou吗...碰到ZOJ 3415之后用了第二个参考网址的方法去求通项,然后这次碰到4870不会搞.参考了chanme的,然后重新把周瑜跟排名都反复推导(不是推倒)四五次才上来写这份有抄袭嫌疑的题解... 这2题很类似,多校的rating相当于强化版,不过原理都一样.好像是可以用高斯消元做,但我不会.默默推公式了. 公式推导参考http://www.cnblogs.com/chanme/p/3861766.html#2993306 http://www.cn

HDU 4405 Aeroplane chess (概率DP求期望)

题意:有一个n个点的飞行棋,问从0点掷骰子(1~6)走到n点需要步数的期望 其中有m个跳跃a,b表示走到a点可以直接跳到b点. dp[ i ]表示从i点走到n点的期望,在正常情况下i点可以到走到i+1,i+2,i+3,i+4,i+5,i+6 点且每个点的概率都为1/6 所以dp[i]=(dp[i+1]+dp[i+2]+dp[i+3]+dp[i+4]+dp[i+5]+dp[i+6])/6  + 1(步数加一). 而对于有跳跃的点直接为dp[a]=dp[b]; #include<stdio.h>

hdu 4586 (概率+期望)

http://acm.hdu.edu.cn/showproblem.php?pid=4586 大致题意:有一个骰子有n个面,掷到每一个面的概率是相等的,每一个面上都有相应的钱数.其中当你掷到m个面之一时,你有多掷一次的机会.问最后所得钱数的期望. 思路:设投掷第一次的期望是p,那么第二次的期望是m/n*p,第三次的期望是 (m/n)^2*p......第N次的期望是(m/n)^(N-1)*p. 那么这些期望之和便是答案.之前也是想到这,但不知道如何处理无限的情况.当时脑卡了,这不是赤裸裸的等比数

HDU 4035:Maze 概率DP求期望(有环)

Maze 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4035 题意: 有N(2 ≤ N ≤ 10000)个房间和一堆双向边(不存在环),每个房间有ki和ei两个值,分别代表回到房间1和游戏结束的概率,求游戏结束时通过的边数的期望 题解: 一道很好很经典的求期望的题 设E[i]为以i为起点,直到游戏结束所通过边数的期望,则E[1]即所求答案 设fa代表父亲节点(由于不存在环,则图为一棵树,设1为根节点),∑ch代表所有孩子节点,size代表与这

HDU 4405:Aeroplane chess 概率DP求期望

One Person Game 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4405 题意: 有个人在玩飞行棋,规则是:掷一个骰子,就能从当前点x飞到(x+点数)处,在棋盘上有一些飞行通道,如果点x和点y间存在飞行通道,那么当你走到点x,就会飞到点y处,起点在0,求从起点飞到终点n所需要投掷骰子次数的期望. 题解: 一道简单的求期望的题,不会求期望的可以看下这里 当点i是飞行通道的起点的时候,由于不需要投掷骰子,就能飞到飞行通道的终点处,所以此