uva 10529 Dumb Bones 区间期望dp ★★
2016-08-29 23:35
483 查看
题意:
现在要铺设多米诺骨牌,放置一次左倒的概率是PL,右倒的概率是PR,他们的和不超过0.5。现在用最优的铺设方法,问铺好n(n<=1000)张牌放置次数的期望。解法:
感觉自己概率期望dp根本没入门啊…对于区间dp这方面很显然要枚举最后一次放牌的位置。由此就划分成了两个互不干涉的区间。
然后参考了大牛的博客:
这题关键状态转移是这样推导出来的。
1.现在只需放置一张牌,问放置次数的期望是多少。
2.对于区间中最后一张牌需要放k次。那么左倒多少次?右倒多少次?
代码:
#include<cstdio> #include<string> #include<cstring> #include<iostream> #include<cmath> #include<algorithm> #include<iomanip> using namespace std; #define all(x) (x).begin(), (x).end() #define for0(a, n) for (int (a) = 0; (a) < (n); (a)++) #define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++) #define mes(a,x,s) memset(a,x,(s)*sizeof a[0]) #define mem(a,x) memset(a,x,sizeof a) #define ysk(x) (1<<(x)) typedef long long ll; typedef pair<int, int> pii; const int INF =0x3f3f3f3f; const int maxn=1000 ; int n; double PL,PR; double dp[maxn+5]; const double eps=1e-10; int dcmp(double x) { if(fabs(x)<eps) return 0; else return x<0?-1:1; } double DP(int x) { if(dcmp(dp[x])>=0 ) return dp[x]; if(x==0) return dp[x]=0; if(x==1) return dp[x]=1.0/(1-PL-PR); dp[x]=INF; for(int i=1;i<=x;i++) { int le=i-1,ri=x-i; dp[x]=min(dp[x],(1-PR)/(1-PL-PR)*DP(le)+(1-PL)/(1-PL-PR)*DP(ri)+1.0/(1-PL-PR)); } return dp[x]; } int main() { std::ios::sync_with_stdio(false); while(cin>>n&&n) { cin>>PL>>PR; for0(i,n+1) dp[i]=-1; cout<<fixed<<setprecision(2)<<DP(n)<<endl; } return 0; }
公式:
E[1]=11−PL−PR左偏次数=PL1−PL−PR
右偏次数=PR1−PL−PR
E=E[左]+E[右]+11−PL−PR+PL1−PL−PRE[左]+PR1−PL−PRE[右]
=11−PL−PR+1−PR1−PL−PRE[左]+1−PL1−PL−PRE[右]
相关文章推荐
- UVA 10529 - Dumb Bones(概率+区间dp)
- UVA 10529 - Dumb Bones(概率+区间dp)
- uva 10529 - Dumb Bones(概率+区间dp)
- UVA 10529 Dumb Bones 概率dp 求期望
- UVa10529 Dumb Bones ( 期望概率DP )
- UVa 10529 Dumb Bones 期望DP
- [UVA]10529 Dumb Bones 期望 + 区间DP DP函数单调性优化
- UVA 10529 - Dumb Bones(概率+区间dp)
- UVA 10529 Dumb Bones 可能性dp 需求预期
- UVA 10529-Dumb Bones(概率dp)
- uva 10529 - Dumb Bones(概率dp)
- UVA 1629 Cake slicing (区间dp --记忆话搜索)
- Uva 1331 - Minimax Triangulation(最优三角剖分 区间DP)
- UVA 10003 —— 区间DP
- UVA 10891 Game of Sum(区间DP)
- UVA - 1632 Alibaba 区间DP
- UVA-1331 Minimax Triangulation 区间dp 计算几何 三角剖分 最大三角形最小化
- Wooden Signs uvalive gym 区间dp
- uva 1331 lrj-P279 三角剖分+区间dp
- UVA 10891 - Game of Sum(区间dp)