zoukankan      html  css  js  c++  java
  • bzoj 3029: 守卫者的挑战【概率dp】

    以后写dp还是向后转移吧……写的把前面加起来的版本怎么也调不过去
    首先注意,因为地图碎片只占1体积,所以>n,<-n的体积是没用的,所以就可以把体积降到n级别,然后用这场胜负像后转移即可,滚动数组优化

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int N=405;
    int n,l,m,a[N];
    double p[N],f[2][N][N],ans;
    int main()
    {
    	scanf("%d%d%d",&n,&l,&m);
    	for(int i=1;i<=n;i++)
    		scanf("%lf",&p[i]),p[i]/=100;
    	for(int i=1;i<=n;i++)
    		scanf("%d",&a[i]);
    	f[0][0][min(m,n)+n]=1;
    	for(int i=0;i<=n;i++)
    	{
    		for(int j=0;j<=i;j++)
    			for(int k=-n;k<=n;k++)
    				f[(i+1)&1][j][k+n]=0;
    		for(int j=0;j<=i;j++)
    			for(int k=-n;k<=n;k++)
    				f[(i+1)&1][j][k+n]+=f[i&1][j][k+n]*(1.0-p[i]),f[(i+1)&1][j+1][min(k+a[i],n)+n]+=f[i&1][j][k+n]*p[i];
    	}
    	for(int j=l;j<=n;j++)
    		for(int k=0;k<=n;k++)
    			ans+=f[(n+1)&1][j][k+n];
    	printf("%.6f
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    LeetCode 43 字符串相乘
    HDU 1031 Design T-Shirt
    HDU 1728 逃离迷宫
    HDU 1285 确定比赛名次
    HDU 1116 Plays on words
    HDU 1195 Open the lock
    HDU 1072 Nightmare
    HDU 1272 小希的迷宫
    HDU 1273 漫步森林
    HDU 1269 迷宫城堡
  • 原文地址:https://www.cnblogs.com/lokiii/p/9633895.html
Copyright © 2011-2022 走看看