zoukankan      html  css  js  c++  java
  • 【BZOJ1419】Red is good 期望DP

    题目大意

      桌面上有(R)张红牌和(B)张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到(1)美元,黑牌则付出(1)美元。可以随时停止翻牌,在最优策略下平均能得到多少钱。

      (0leq R,Bleq 5000)

    题解

      设(f_{i,j})为还剩下(i)张红牌和(j)张黑牌时的最大收益。每次可以选择翻或者不翻。

    [egin{align} f_{i,0}&=i\ f_{0,i}&=0\ f_{i,j}&=max(0,frac{i(f_{i-1,j}+1)+j(f_{i,j-1}-1)}{i+j}) end{align} ]

      最后答案是(f_{R,B})

      辣鸡出题人卡空间要用滚动数组才能过

      时间复杂度:(O(RB))

    代码

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cstdlib>
    #include<ctime>
    #include<utility>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pii;
    double f[2][5010];
    int main()
    {
    //	freopen("bzoj1419.in","r",stdin);
    	int n,m;
    	scanf("%d%d",&n,&m);
    	int i,j;
    	int t=0;
    	for(i=0;i<=n;i++)
    	{
    		t^=1;
    		f[t][0]=i;
    		for(j=1;j<=m;j++)
    			f[t][j]=max(0.,(f[t^1][j]+1)*double(i)/(i+j)+(f[t][j-1]-1)*double(j)/(i+j));
    	}
    	ll s=f[t][m]*1000000;
    	printf("%lld.%.6lld
    ",s/1000000,s%1000000);
    	return 0;
    }
    
  • 相关阅读:
    JavaScript实现的抛物线运动效果
    圆周运动
    正则表达式种双反斜杠问题\
    自定义日期格式-炫酷
    css font的简写规则
    匀速运动及案例
    微博发布
    无缝滚动和无缝滚动-缓存
    Dojo实现Tabs页报错(一)
    我的2013之十八年寒窗磨利剑,初出江湖还看今朝
  • 原文地址:https://www.cnblogs.com/ywwyww/p/8511382.html
Copyright © 2011-2022 走看看