hdu 1203 小数背包

与hdu 2955差不多,没什么好说的

代码:

#include<iostream> #include<cstdio> #include<cmath> using namespace std; double dp[10001]; int a[1001]; double b[1001]; int n,m; double max(double a,double b) { return a>b?a:b; } void solve(int sum,int a,double b) { for(int i=sum;i>=a;i--) dp[i]=max(dp[i],1.0-(1.0-dp[i-a])*(1.0-b)); } int main() { while(scanf("%d%d",&n,&m)!=EOF&&!(n==0&&m==0)) { int i; for(i=1;i<=n;i++) dp[i]=0.0; dp[0]=0.0; for(i=0;i<m;i++) scanf("%d%lf",&a[i],&b[i]); for(i=0;i<m;i++) solve(n,a[i],b[i]); printf("%.1lf%%/n",dp[n]*100.0); } return 0; } 

你可能感兴趣的:(hdu 1203 小数背包)