01背包
阿新 • • 發佈:2017-08-10
i++ closed style logs col one tar gif b-
Robberies
HDU - 2955
題意:小偷搶銀行,問在被捕的概率不超過p的情況下最多搶多少錢。
![技術分享](/img/jia.gif)
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=10010; 4 double f[maxn]; //不被捕的概率 5 int v; 6 double p; 7 double x[maxn]; 8 int m[maxn]; 9 int main(){ 10 int t; 11 scanf("%d",&t); 12 while(t--){ 13 intView Coden; 14 int ans=0; 15 memset(f,0,sizeof(f)); 16 f[0]=1; 17 scanf("%lf%d",&p,&n); 18 int sum=0; 19 for(int i=0;i<n;i++){ 20 scanf("%d%lf",&m[i],&x[i]); 21 sum+=m[i]; 22 } 23 for(int i=0;i<n;i++) 24 for(int j=sum;j>=m[i];j--){ 25 f[j]=max(f[j],f[j-m[i]]*(1-x[i])); 26 } 27 for(int i=sum;i>0;i--){ 28 if((1-f[i])<=p){ 29 ans=i; 30 break; 31 } 32 } 33 printf("%d\n",ans); 34 } 35 }
01背包