LightOJ 1030 Discovering Gold(概率dp)

題解:

從後面往前加上本金乘上概率即可,控制好多少個可以走到這裏。

#include <algorithm>
#include  <iostream>
#include   <cstdlib>
#include   <cstring>
#include    <cstdio>
#include    <string>
#include    <vector>
#include    <bitset>
#include     <stack>
#include     <cmath>
#include     <deque>
#include     <queue>
#include      <list>
#include       <set>
#include       <map>
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define line printf("---------------------------\n")
#define mem(a, b) memset(a, b, sizeof(a))
#define pi acos(-1)
using namespace std;
typedef long long ll;
const double eps = 1e-9;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
const int maxn = 100+10;

double dp[maxn];

int main(){
	int t, cas = 1;
	scanf("%d", &t);
	while(t--){
		mem(dp, 0);
		int n;
		scanf("%d", &n);
		for(int i = 0; i < n; i++){
			scanf("%lf", &dp[i]);
		}
		int cnt = 1;
		for(int i = n-2; i >= 0; i--){
			cnt = cnt > 6 ? 6 : cnt;
			for(int j = 1; j <= cnt; j++){
				dp[i] += dp[i+j]/cnt;
			}
			cnt++;
		}
		printf("Case %d: %.6lf\n", cas++, dp[0]);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章