bzoj 3029: 守卫者的挑战 概率dp
来源:互联网 发布:淘宝店怎么经营管理 编辑:程序博客网 时间:2024/05/23 00:49
题意
有n个位置,每个位置有一个权值ai,若ai<0则ai必为-1,且有pi的概率获得这个值。初始值为K。现在问至少获得了L个值且获得的值的和不小于0的概率。
n<=200,L<=n,ai,K<=2000
分析
设f[i,j,k]表示到第i个位置,拿了j个值,当前和为k的概率。
显然若当前的值大于n的话就一定可以满足和不小于0,那么就把大于n的放到n这里就好了。
转移随便yy一下就好了。
代码
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int N=201;int n,m,L,a[N];double p[N],f[N][N][401];void modify(int i,int j,int k,double w){ k=min(k,n); f[i][j][k+n]+=w;}int main(){ scanf("%d%d%d",&n,&L,&m); for (int i=1;i<=n;i++) scanf("%lf",&p[i]),p[i]=1.0*p[i]/100; for (int i=1;i<=n;i++) scanf("%d",&a[i]); if (m>n) f[0][0][n+n]=1; else f[0][0][m+n]=1; for (int i=0;i<n;i++) for (int j=0;j<=i;j++) for (int k=-n;k<=n;k++) { modify(i+1,j,k,1.0*(1-p[i+1])*f[i][j][k+n]); modify(i+1,j+1,k+a[i+1],1.0*p[i+1]*f[i][j][k+n]); } double ans=0; for (int j=L;j<=n;j++) for (int k=0;k<=n;k++) ans+=f[n][j][k+n]; printf("%.6lf",ans); return 0;}
阅读全文
0 0
- bzoj 3029: 守卫者的挑战 概率dp
- 【bzoj3029】 守卫者的挑战 概率dp
- 概率DP 守卫者的挑战
- 3029: 守卫者的挑战 概率与期望DP
- BZOJ 3029 守卫者的挑战 期望DP
- [BZOJ 3029]守卫者的挑战:期望DP
- bzoj 3029 守卫者的挑战
- BZOJ 3029: 守卫者的挑战
- 守卫者的挑战-(概率dp)Poetize系列
- TYVJ 1864 BZOJ 3029 守卫者的挑战
- NKOJ 1623 守卫者的挑战(概率+递推)
- CODEVS 1997 守卫者的挑战(三维dp)
- bzoj3029 守卫者的挑战
- BZOJ3029: 守卫者的挑战
- BZOJ2435 守卫者的挑战
- 【动态规划】守卫者的挑战
- Codevs P1997 守卫者的挑战
- Tyvj P1864 守卫者的挑战
- 【I2C时序分析】-hym8563为列
- Xcode 下删除Provisioning Profiles文件详细介绍
- |BZOJ 1650|二分|贪心|[Usaco2006 Dec]River Hopscotch 跳石子
- 程序中调用进程API时进程打开缓慢引起方法调用失败
- JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)
- bzoj 3029: 守卫者的挑战 概率dp
- cordova app 升级
- 简易拼图(OC)
- 软件工程(C编码实践篇)学习总结
- android 高级之旅 (三 )picasso、glide、imageloader等几个常用的图片加载框架
- Web服务器的工作原理
- Inno Setup使用方法备份
- hdoj 1090
- 21款生物信息在线分析工具汇编