当前位置: 首页 > news >正文

hdu 4050 2011北京赛区网络赛K 概率dp ***

题目:给出1-n连续的方格,从0开始,每一个格子有4个状态,左右脚交替,向右跳,而且每一步的步长必须在给定的区间之内。当跳出n个格子或者没有格子可以跳的时候就结束了,求出游戏的期望步数

0:表示不能到达这个格子

1:表示左脚跳进这个格子

2:表示右脚跳进这个格子

3:随意哪个脚跳进这个格子,而且下一步随意用哪个脚

 

dp[i][j] :表示走到第 i 个格子在 j 状态的期望。

 

当j=1时,你可以走到dp[i+k][2],dp[i+k][3],

 

当j=2时,你可以走到dp[i+k][1],dp[i+k][3],

当j=3时,你可以走到dp[i+k][2],dp[i+k][3],dp[i+k][1],

概率dp专题一波走起

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 #include<map>
 8 using namespace std;
 9 #define MOD 1000000007
10 const int INF=0x3f3f3f3f;
11 const double eps=1e-5;
12 typedef long long ll;
13 #define cl(a) memset(a,0,sizeof(a))
14 #define ts printf("*****\n");
15 const int MAXN=1005;
16 double dp[4004][4];
17 double p[4004][4];
18 int main(){
19     int t,a,b,n;
20     scanf("%d",&t);
21     while(t--)
22     {
23         scanf("%d%d%d",&n,&a,&b);
24         for(int i=1;i<=n;i++)
25             for(int j=0;j<4;j++)
26                 scanf("%lf",&p[i][j]);
27         for(int i=n+1;i<=n+a;i++)
28             for(int j=0;j<4;j++)
29                 p[i][j]=(j==3);
30         memset(dp,0,sizeof(dp));
31         dp[0][3]=1;
32         for(int i=0;i<=n;i++){
33             double p1=1,p2=1,p3=1;
34             for(int j=a;j<=b;j++){
35                 dp[i+j][2]+=dp[i][1]*p1*p[i+j][2];
36                 dp[i+j][3]+=dp[i][1]*p1*p[i+j][3];
37                 p1*=(p[i+j][0]+p[i+j][1]);
38                 dp[i+j][1]+=dp[i][2]*p2*p[i+j][1];
39                 dp[i+j][3]+=dp[i][2]*p2*p[i+j][3];
40                 p2*=(p[i+j][0]+p[i+j][2]);
41                 dp[i+j][1]+=dp[i][3]*p3*p[i+j][1];
42                 dp[i+j][2]+=dp[i][3]*p3*p[i+j][2];
43                 dp[i+j][3]+=dp[i][3]*p3*p[i+j][3];
44                 p3*=p[i+j][0];
45             //    cout<<dp[i+j][1]<<" "<<dp[i+j][2]<<" "<<dp[i+j][3]<<endl;
46             }
47         }
48         double ans=0;
49         for(int i=1;i<=n+a;i++)
50             for(int j=1;j<4;j++)
51                 ans+=dp[i][j];
52         printf("%.8f\n",ans);
53     }
54     return 0;
55 }

 

转载于:https://www.cnblogs.com/cnblogs321114287/p/4713508.html

相关文章:

  • git stash用法
  • 545E. Paths and Trees
  • hdu 1166 敌兵布阵 ( 线段树或者树状数组)
  • WIN7 自动同步服务器上备份文件
  • swift UI特殊培训38 与滚动码ScrollView
  • Objective-C:在类中设置不同协议
  • React Native 简介:用 JavaScript 搭建 iOS 应用(2)
  • 以ASPX生成静态页
  • android获得屏幕高度和宽度
  • 项目直播:任务管理系统应用
  • 苹果电脑键盘符号记录
  • 转:Windows 8上强制Visual Studio以管理员身份运行
  • BZOJ 1047: [HAOI2007]理想的正方形( 单调队列 )
  • HDU 2955(0-1背包问题)
  • Unity Shader:Projective Texture Mapping
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Cookie 在前端中的实践
  • HomeBrew常规使用教程
  • maven工程打包jar以及java jar命令的classpath使用
  • 聊聊sentinel的DegradeSlot
  • 马上搞懂 GeoJSON
  • 前端
  • 使用 QuickBI 搭建酷炫可视化分析
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 新手搭建网站的主要流程
  • Spring第一个helloWorld
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • # include “ “ 和 # include < >两者的区别
  • #android不同版本废弃api,新api。
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • (数据结构)顺序表的定义
  • (学习日记)2024.01.19
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ******之网络***——物理***
  • .NET Micro Framework初体验(二)
  • .net和php怎么连接,php和apache之间如何连接
  • .Net下的签名与混淆
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @RequestMapping-占位符映射
  • @SpringBootApplication 包含的三个注解及其含义
  • [ C++ ] STL---string类的使用指南
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [APIO2015]巴厘岛的雕塑
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • [C#][DevPress]事件委托的使用
  • [C#]winform部署PaddleOCRV3推理模型
  • [C++] sqlite3_get_table 的使用
  • [Docker]十一.Docker Swarm集群raft算法,Docker Swarm Web管理工具
  • [EFI]DELL XPS13 9360电脑 Hackintosh 黑苹果efi引导文件
  • [HJ56 完全数计算]
  • [IE编程] 了解Urlmon.dll和Wininet.dll
  • [JavaScript]如何讓IE9, IE8, IE7, IE6關閉視窗時不彈出對話訊息