codeforces 167B Wizards and Huge Prize DP 概率
来源:互联网 发布:centos 7开机进入grub 编辑:程序博客网 时间:2024/06/03 13:05
题意:打败1个tour可以获得奖品或者是一个袋子,一开始自己拿了一个容量为k的袋子,打败某个tour的概率是p,问一个人可以至少打败L个tour和把自己所有奖品拿回去的概率。
做法:建立状态dp[i][j][k],在前i个tour,打败j个,剩下k的容量。没看见那个instead,错了许久,原来有些tour只会给你个袋子啊...
#include <iostream>#include<cstdio>#include<algorithm>using namespace std;const int LMT=202;const int zero=200;int rest[LMT];double dp[LMT][LMT][LMT<<1],p[LMT];int main(){ int n,l,k,x; double ans=0; scanf("%d%d%d",&n,&l,&k);; for(int i=1;i<=n;i++) { scanf("%d",&x); p[i]=x/100.0; } for(int i=1;i<=n;i++) { scanf("%d",&rest[i]); } const int end=zero+200; dp[0][0][zero+k]=1; for(int i=1;i<=n;i++) for(int j=0;j<i;j++) for(int k=0;k<=end;k++) { if(rest[i]!=-1) { int x=min(end,k+rest[i]); dp[i][j+1][x]+=dp[i-1][j][k]*p[i]; } else if(k>0)dp[i][j+1][k-1]+=dp[i-1][j][k]*p[i]; dp[i][j][k]+=dp[i-1][j][k]*(1-p[i]); } for(int i=l;i<=n;i++) for(int j=zero;j<=end;j++) ans+=dp[n][i][j]; printf("%.12lf\n",ans); return 0;}
- codeforces 167B Wizards and Huge Prize DP 概率
- Codeforces 167B Wizards and Huge Prize 概率dp(水
- Codeforces 167B Wizards and Huge Prize 概率dp
- codeforces 167B Wizards and Huge Prize 概率dp
- codeforces 167B Wizards and Huge Prize (概率dp,类似背包)
- Codeforces 167 B. Wizards and Huge Prize
- Codeforces 168D Wizards and Huge Prize
- Codeforces Round #114 (Div. 1) B. Wizards and Huge Prize CF167B
- Codeforces#167E Wizards and Bets 高斯消元
- CodeForces 351B Jeff and Furik 概率DP 逆序对
- CodeForces 476B Dreamoon and WiFi 数学 概率 DP
- CodeForces 351 B.Jeff and Furik(概率DP)
- Codeforces 400B Inna and Huge Candy Matrix(模拟)
- codeforces 167C Wizards and Numbers(找规律,博弈)
- Codeforces 696B 树形dp,概率
- codeforces 696B 树形dp+概率
- codeforces 351B B. Jeff and Furik(概率)
- Codeforces 235B Let's Play Osu! 概率dp(水
- 盖茨遭央视追问“你幸福吗”
- DB2的CATALOG相关操作命令示例
- MongoDB在Windos环境下的安装、启动、关闭
- 【小蒙淘金】2.1金评-非农行情即时分析!
- WFI and WFE
- codeforces 167B Wizards and Huge Prize DP 概率
- CXF的大体原理
- JQuery插件
- 18条工作感想:不要不情愿地工作
- js_闭包
- oracle使用聚合函数实现 多行合并
- [DB] MySQL窗口输入密码后消失问题 【MYSQL】
- 判断机器大小字节序
- 有效的沟通非常重要