UVA 10529 Dumb Bones 可能性dp 需求预期

简介:

主题链接:点击打开链接

题意:

要在一条直线上摆多米诺骨牌。

输入n, l, r

要摆n张排,每次摆下去向左倒的概率是l, 向右倒的概率是r

能够採取最优策略。即能够中间放一段。然后左右两边放一段等,摆放顺序随意。

问:在最佳策略下要摆成n张牌的期望次数。


思路:

点击打开链接

#include <cstdio>
#include <iostream>
#include <cstring>
#include <queue>
#include <algorithm>
#include <map>
#include <cmath>
template <class T>
inline bool rd(T &ret) {
    char c; int sgn;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?

0:(c-'0'); while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0'); ret*=sgn; return 1; } template <class T> inline void pt(T x) { if (x <0) { putchar('-'); x = -x; } if(x>9) pt(x/10); putchar(x%10+'0'); } using namespace std; typedef long long ll; #define N 2002 const ll mod = 1e9+7; int n; double l, r; double dp[N]; double solve(){ dp[0] = 0; dp[1] = 1.0/(1.0-l-r); for(int i = 2; i <= n; i++) { dp[i] = 1e18; for(int j = 0; j < i; j++) { int L = j, R = i-j-1; double x = (1+ dp[L] + dp[R] -dp[L]*r -dp[R]*l) / (1-l-r); dp[i] = min(dp[i], x); } } return dp[n]; } int main() { while(cin>>n>>l>>r, n){ printf("%.2f\n", solve()); } return 0; }



版权声明:本文博客原创文章。博客,未经同意,不得转载。





本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4688839.html,如需转载请自行联系原作者


相关文章
|
5月前
【每日一题Day357】LC1155掷骰子等于目标和的方法数 | dp
【每日一题Day357】LC1155掷骰子等于目标和的方法数 | dp
50 0
|
5月前
【每日一题Day264】LC931下降路径最小和 | dp
【每日一题Day264】LC931下降路径最小和 | dp
35 0
|
5月前
【每日一题Day291】LC1289下降路径最小和 II | dp
【每日一题Day291】LC1289下降路径最小和 II | dp
32 0
|
10月前
|
机器学习/深度学习 算法 测试技术
C++前缀和算法:合并石头的最低成本原理、源码及测试用例(一)
C++前缀和算法:合并石头的最低成本原理、源码及测试用例
|
10月前
|
算法 测试技术 C#
C++前缀和算法:合并石头的最低成本原理、源码及测试用例(二)
C++前缀和算法:合并石头的最低成本原理、源码及测试用例
牛客IOI周赛23-普及组 D.小L的数列 (dp状态+枚举因子)
牛客IOI周赛23-普及组 D.小L的数列 (dp状态+枚举因子)
101 0
|
人工智能 算法
[leetcode] 798 得分最高的最小轮调 - 思维dp
轮调实际上是这个样子的: 每次讲最前面的元素放到数组最后,然后将所有元素集体向前移动一位 在当前值a [ i ] ≤ i 的时候会获得1 分,问最大的分是多少? 先说明一个事实: 一次轮调之后,对于除了最前面的每个数,他的下标会减小1 ,而对于最前面的那个数,他的下标直接变为最大 大致分为以下三种情况: 本来a [ i ] 就小于下标i ,轮调之后下标减小值不变,所以依旧会获得1 分 本来a [ i ] = = i ,轮调之后,下标减小而值不变,所以值就比下标大1 ,所以说会失去1 分 本来a [ i ] > i,轮调之后,下标更小,值依旧会大于下标,所以依旧不得分
120 0
[leetcode] 798 得分最高的最小轮调 - 思维dp
|
机器学习/深度学习
1751. 最多可以参加的会议数目 II :「朴素 DP」&「二分优化 DP」
1751. 最多可以参加的会议数目 II :「朴素 DP」&「二分优化 DP」
|
机器学习/深度学习 算法
1012. 至少有 1 位重复的数字 : 通用数位 DP 求解方案
1012. 至少有 1 位重复的数字 : 通用数位 DP 求解方案
|
算法 Java C++
算法系统学习-水仙fa数是啥花?(蛮力算法补充)
该系列是基于有一定语言基础(C,C++,Java等等)和基本的数据结构基础进行的算法学习专栏,如果觉得有点吃力 😥 ,建议先了解前提知识再学习喔!本个专栏会将用更容易理解的表达去学习算法,如果在一些表述上存在问题还请各位多多指点
144 0