hdu 2955 Robberies
2015-03-18 11:47
162 查看
题目大意:
盗贼去盗劫,给你被抓概率的上限和物品的个数,要求在被抓概率的范围内可以盗窃的最大价值为多少解题思路:
0-1背包问题,用物品的总价值作为背包的容量,不被抓的概率为价值,在不被抓的前提下输出最大的价值即可;有的人会把被抓的概率作为背包的容量,这是不对的,如果你在1号银行被抓,那么对于2号银行你就不存在被抓的概率,所以,被抓不是相互独立的事件,所以不可以进行递推。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { double v,p[110]; int n,w[110]; double dp[10010]; memset(dp,0,sizeof(dp)); dp[0]=1; int sum=0; scanf("%lf%d",&v,&n); for(int i=0;i<n;i++) { scanf("%d%lf",&w[i],&p[i]); sum+=w[i]; } for(int i=0;i<n;i++) for(int j=sum;j>=w[i];j--) dp[j]=max(dp[j],dp[j-w[i]]*(1.0-p[i])); for(int i=sum;i>=0;i--) { if(dp[i]>=1-v) { printf("%d\n",i); break; } } } }
相关文章推荐
- hdu 2955 Robberies 01背包
- HDU2955_Robberies【01背包】
- hdu 2955 Robberies
- hdu 2955 Robberies + LightOJ 1079 Just another Robbery (01背包 概率)
- hdu 2955 Robberies(背包问题)
- HDU 2955 Robberies(01背包)(动态规划)
- HDU 2955 Robberies(01 背包)
- hdu 2955 Robberies 0-1背包/概率初始化
- HDU 2955 Robberies(01背包)
- hdu 2955 Robberies
- HDU 2955 Robberies
- HDU 2955 Robberies (01背包,思路要转换一下,推荐!)
- LightOJ 1079 Just another Robbery &&HDU 2955 Robberies 01背包
- HDU 2955 Robberies(0-1 DP)
- hdu 2955 Robberies
- HDU 2955 Robberies (0-1背包)
- HDU 2955 —— Robberies 01背包
- hdu 2955 Robberies 背包
- hdu 2955 Robberies(01背包变形)
- hdu 2955 Robberies(概率,dp)