点此看题面

大致题意: 有\(6\)个人玩大富翁,共有\(n\)块地,进行\(500\)轮,已知每个人掷骰子掷出\(1\sim6\)的概率。当某人到达一块未被占领的地时,他可以占领它。求最后每个人占有地的期望块数。

概率\(DP\)

这应该是一道概率\(DP\)题。

我们可以定义\(Arrive_{i,j,k}\)表示第\(i\)个人在第\(j\)轮到达第\(k\)块地的概率,\(Never_{i,j,k}\)表示第\(i\)个人在第\(j\)轮及之前从未到达过第\(k\)块地的概率

显然,初始化\(Arrive_{i,0,1}=1,Never_{i,0,j}=1(1\le j\le n)\)。

然后,我们枚举\(i,j,k\)以及骰子掷出的步数\(t\)来进行转移。

由\(t\)可计算出上一步应由\(pre=(k+n-t\%n-1)\%n+1\)转移过来。

注意转移时应特判\(pre\)不为\(1\),应为\(pre=1\)时说明已经走出了一个循环,接下来会重复计算。

但若这是第一轮,当\(pre=1\)时\(Arrive\)数组依然需要转移,因为\(Arrive\)数组此时只有\(k=1\)的位置上有值。

计算答案

接下来考虑如何计算答案。

我们枚举第\(i\)个人,第\(j\)轮,以及第\(k\)块地,则应将第\(i\)个人的\(ans\)加上下面这个式子:

\[\prod_{t=1}^{i-1}Never_{t,j,k}\cdot Arive_{i,j,k}\cdot\prod_{t=i+1}^6Never_{t,j-1,k}\]

这应该比较好理解:

  1. 当\(t<i\)时,第\(t\)个玩家比第\(i\)个玩家先走,我们要确保第\(t\)个玩家在这一轮及以前从未走过第\(k\)块地。
  2. 当\(t=i\)时,我们要确保第\(t\)个玩家在这一轮刚好走到第\(k\)块地。
  3. 当\(t>i\)时,第\(t\)个玩家比第\(i\)个玩家后走,因此这个玩家就算这一轮走到第\(k\)块地也没关系,所以只需确保他在这一轮以前从未走过第\(k\)块地即可。

代码

#include<bits/stdc++.h>
#define Tp template<typename Ty>
#define Ts template<typename Ty,typename... Ar>
#define Reg register
#define RI Reg int
#define Con const
#define CI Con int&
#define I inline
#define W while
#define N 500
using namespace std;
int n;double p[7][7],Arrive[7][N+5][N+5],Never[7][N+5][N+5];
int main()
{RI i,j,k,t,pre;Reg double ans,res;for(scanf("%d",&n),i=1;i<=6;++i) for(j=1;j<=6;++j) scanf("%lf",&p[i][j]);//读入for(i=1;i<=6;++i) {for(Arrive[i][0][1]=j=1;j<=n;++j) Never[i][0][j]=1;//初始化for(j=1;j<=500;++j) for(k=1;k<=n;++k) for(t=1;t<=6;++t)//枚举状态进行转移{(pre=(k+n-t%n-1)%n+1)^1&&(Never[i][j][k]+=p[i][t]*Never[i][j-1][pre]),//转移Never数组(pre^1||!(j^1))&&(Arrive[i][j][k]+=p[i][t]*Arrive[i][j-1][pre]);//转移Arrive数组}}for(i=1;i<=6;++i,printf("%.3lf\n",ans)) for(ans=0,j=1;j<=500;++j) for(k=1;k<=n;++k)//统计答案{for(res=Arrive[i][j][k],t=1;t^i;++t) res*=Never[t][j][k];for(t=i+1;t<=6;++t) res*=Never[t][j-1][k];ans+=res;}return 0;
}

转载于:https://www.cnblogs.com/chenxiaoran666/p/CometOJDay4Div1H.html

【CCPC-Wannafly Winter Camp Day4 (Div1) H】命命命运(概率DP)相关推荐

  1. 阔力梯的树(2020 CCPC Wannafly Winter Camp Day2 Div.12 )dsu on tree

    题解: dsu on tree dsu on tree的基本步骤就不说了 看到这题询问结点的子树问题,而且询问时离线的,首先想到的dsu on tree的这个trick. 本题的难题就是如何维护结点所 ...

  2. 【CCPC-Wannafly Winter Camp Day4 (Div1) A】夺宝奇兵(水题)

    点此看题面 大致题意: 有\(n\)种宝藏,每种各两个.让你依次获得\(1\sim n\)号宝藏,然后依次获得剩余的\(n\sim1\)号宝藏,求最少步数. 简单结论 其实这题有一个十分简单的结论,即 ...

  3. 2020 CCPC Wannafly Winter Camp Day3 部分题解(ACEFG)

    查看题目 A 黑色气球 题意: n个气球,每个气球高度为正整数.给你每两个气球之间的高度和,还原出所有气球的高度,保证答案唯一. 解题思路: 签到题,因为高度的范围不大,直接枚举第一个气球的高度,检测 ...

  4. 2020 CCPC Wannafly Winter Camp Day2 Div.12——A 托米的字符串【构造、数学】

    题目传送门 题目描述 托米有一个字符串,他经常拿出来玩.这天在英语课上,他学习了元音字母 a , e , i , o , u {a,e,i,o,u} a,e,i,o,u 以及半元音 y {y} y . ...

  5. 2020 CCPC Wannafly Winter Camp Day6 M—自闭——模拟

    链接:https://ac.nowcoder.com/acm/contest/4137/M 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...

  6. 2020 CCPC Wannafly Winter Camp Day7 K 修炼

    题意: 一个游戏,规则如下: 有六个值 v 1 , v 2 , a 1 , a 2 , b 1 , b 2 v_1,v_2,a_1,a_2,b_1,b_2 v1​,v2​,a1​,a2​,b1​,b2 ...

  7. 2019 wannafly winter camp day5-8代码库

    目录 day5 5H div2 Nested Tree (树形dp) 5F div2 Kropki (状压dp) 5J div1 Special Judge (计算几何) 5I div1 Sortin ...

  8. 2019 CCPC wannfly winter camp Day 5

    C - Division 思路:我们考虑到一点,从大往小取得顺序是不会有问题的,所以可以直接主席树,但是开不下空间,我们可以log分段求. #include<bits/stdc++.h> ...

  9. 2019 CCPC wannfly winter camp Day 8

    E - Souls-like Game 直接线段树合并矩阵会被卡T掉,因为修改的复杂度比询问的复杂度多一个log,所以我们考虑优化修改. 修改的瓶颈在于打lazy的时候, 所以我们预处理出每个修改矩阵 ...

最新文章

  1. python2.7除法_对python中的float除法和整除法的实例详解
  2. [MSSQL2012]LEAD函数
  3. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...
  4. MYSQL数据库性能调优之六:备份
  5. OpenCV:OpenCV目标检测Boost方法单独训练
  6. java面试 泛型_Java面试题五:Java 的泛型, super T 和 extends T 的区别
  7. angular 关闭当前页_angular刷新当前页 angularjs页面不刷新的解决办法 - 电脑常识 - 服务器之家...
  8. vin码识别(车架号识别)的工具
  9. 最好用的论文数据搜索网站,搜索容易让写论文变轻松!
  10. 关于Growth Hacker的笔记
  11. ALU计算机专业术语,计算机专业术语大全
  12. App Extension
  13. 【初阶与进阶C++详解】第二十二篇:C++11新特性(列表初始化+变量类型推到+右值引用+新增默认成员函数+可变模板参数+lambda表达式+包装器function_bind)
  14. 【BLE】CC2541之OAD
  15. 百度网盘安装在c盘显示系统权限限制的解决方法
  16. python中进制转换及IP地址转换
  17. 名企面试最看中的七点关键能力
  18. 两子公司犯单位行贿罪各罚100万 鹏博士收警示函高度重视
  19. java中gc触发的条件_触发Full gc条件
  20. 光纤激光切割机的光路为什么会偏移?

热门文章

  1. 技术报告 | 罗汉堂:理解大数据:数字时代的数据和隐私2021.pdf(附下载链接)
  2. 小论文投稿经历与经验
  3. 大规模部署lxc容器遇到的若干问题
  4. pap认证过程_广域网PAP配置及认证
  5. 阿里云网站备案申请被驳回的问题解答汇总
  6. Java基础复习-数据类型学习
  7. 【100%通过率】华为OD机试真题 C++ 实现【无向图染色】【2022.11 Q4新题】
  8. 我有一个网络工程师的梦
  9. 最强大脑魏郭撕X,理科男与文科生的…
  10. php设置header头实现将视频下载到客户端