• HDU 5346 MZL's game (状态设计各种强)


    真是太奇妙了,感觉这是这个暑假写的最厉害的DP了(说的好像写过几道DP一样),设计的状态精妙。

    因为题解不知道在说个毛线,而且貌似写错了,请问i-1的时候有j-1的活人为什么多攻击一次人会复活?反正我没看懂。。而且下面还有情况接下来说。

    把它翻译成人话。。

    由于每个人等概率出于任意一个位置。不妨视为有序,即从1-n一个一个选中人。该人死亡则跳过。最后统计出所有位置的情况即为一个人的存活率(这个题解说的好像比我容易懂= =)

    设计的状态是

      dp[i][j]表示,选中第i个人时,第i-n(即没有攻击过的人)已经收到了j次攻击,注意是已经。

    转移方程

      dp[i][j] = dp[i-1][j]*(1-(1-p)^j)//i-1这个人在j次攻击中死亡的概率,也就是第j次攻击不是由第i-1个人发出而是由他更前面的人发出,则为选中i-1时,它已经收到了j次攻击,且在这j次攻击中死亡了(1-打j下都不死的概率)概率。相乘

            + dp[i-1][j-1]*(1-p)^(j-1) //i-1个人在j-1次攻击中存活,即第j次攻击由i-1发出。

    以上 就覆盖了所有情况。用逆元处理一下p=x*inv(p)%MOD 

    最后统计结果。

    结果就是对于所有位置,选中他们时遭遇了k次攻击,且在k次攻击里都没有死掉。也就是sigma(i=1->n, dp[i][k])*(1-p)^k,最后/n,因为一个人等概率存在于任意一个位置

    最后有一个很奇怪的疑问。。。

    我。。因为草稿上。。没有写j-1,所以不小心写成了dp[i-1][j-1]*(1-p)^j,最后统计的时候没有*(1-p)^k。。居然也AC了。。

    所以这个DP应该有别的理解方法?我再想想= =会有大神路过解答吗?

    另外如何才能想出这么精妙的DP呢?DP渣表示不解。。

  • 相关阅读:
    nginx配置虚拟主机
    nginx 中http协议的相关配置
    nginx的性能优化
    编译安装NGINX-1.21.0
    nginx命令使用
    编译安装NGINX1.16.1
    nginx: [emerg] getpwnam("nginx") failed
    swift选择类或结构体
    工具与网址
    WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h:373
  • 原文地址:https://www.cnblogs.com/bbbbbq/p/4709546.html
Copyright © 2020-2023  润新知