题目大意:

从起点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]*1/6.0+dp[i+2]*1/6.0+dp[i+3]*1/6.0+dp[i+4]*1/6.0+dp[i+5]*1/6.0+dp[i+6]*1/6.0+1

碰到可以直接飞的进行一个if判断,直接将dp值赋予即可,不执行上述的dp操作过程

 #include<cstdio>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
const int maxn=1e5+;
int match[maxn];
double dp[maxn];
void init()
{
memset(dp,,sizeof(dp));
memset(match,,sizeof(match));
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
if(n==&&m==) break;
init();
for(int i=;i<=m;i++){
int a,b;
scanf("%d%d",&a,&b);
match[a]=b;
}
for(int i=n-;i>=;i--){
if(match[i]) dp[i]=dp[match[i]];
else{
for(int j=;j<=;j++){
dp[i]+=dp[j+i]/6.0;
}
dp[i]+=;
}
}
printf("%.4f\n",dp[]);
}
return ;
}

最新文章

  1. 使用 T-SQL 计算当日日期、本周第一天与最后一天
  2. 线程池——JAVA并发编程指南
  3. 用KNN算法分类CIFAR-10图片数据
  4. easyui源码翻译1.32--ComboGrid(数据表格下拉框)
  5. Universal Asynchronous Receiver/Transmitter
  6. 【jQuery】用jQuery给文本框添加只读属性【readOnly】
  7. Python 手册——开胃菜
  8. 百度识图API
  9. gis论坛
  10. Qt编译
  11. jQuery按键事件响应的Demo
  12. SQL的介绍及MySQL的安装
  13. C#微信公众号开发——错误一
  14. 腾讯面试题,js处理1千万条数据排序并且页面不卡顿
  15. Unable to resolve dependency问题解决
  16. python--第十三天总结(html ,css 语法)
  17. 【模板】K短路 A-star
  18. SQL Server -- 随笔
  19. vue在页面嵌入别的页面或者是视频2
  20. kivy __init__() got an unexpected keyword argument &#39;__no_builder&#39; Kivy

热门文章

  1. 理解LDAP与LDAP注入
  2. MariaDB 安装配置记录
  3. ubuntu19.04 redis启动和停止及连接
  4. opencv 实现人脸检测(harr特征)
  5. mybatis(五):源码分析 - 参数映射流程
  6. python:删除文件及文件夹
  7. Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099
  8. 构造和改变一个string的其他方法
  9. Python之路Day06
  10. pygame 浅解