首页 > 代码库 > hdu 4405 Aeroplane chess
hdu 4405 Aeroplane chess
题意:
hzz一开始在0位置,然后hzz掷骰子,骰子为i,就往前走i步,当hzz位置大于等于n的时候结束,求掷骰子次数的期望
有m个直达点 (x,y),走到x时可以直接到y
求期望一般从后往前推
当 i不等于任何一个x时
dp[i]=seg(1/6*dp[i+k])+1
否则
dp[i]=dp[y]
1 #include<iostream> 2 #include<string> 3 #include<cstdio> 4 #include<vector> 5 #include<queue> 6 #include<stack> 7 #include<algorithm> 8 #include<cstring> 9 #include<stdlib.h>10 using namespace std;11 #define pb push_back12 struct node{13 int x,y;14 }p[1010];15 int cmp(node a,node b){16 return a.x<b.x;17 }18 int main()19 {20 int n,m;21 while(cin>>n>>m,n+m){22 double dp[101010];23 memset(dp,0,sizeof(dp));24 for(int i=0;i<m;i++)25 scanf("%d%d",&p[i].x,&p[i].y);26 sort(p,p+m,cmp);27 int cnt=m-1;28 for(int i=n-1;i>=0;i--){29 dp[i]=1;30 if(cnt>=0&&i==p[cnt].x){31 dp[i]=dp[p[cnt].y];32 cnt--;33 continue;34 }35 for(int j=6;j>=1;j--)36 dp[i]+=1.0/6*dp[i+j];37 }38 printf("%.4f\n",dp[0]);39 }40 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。