题意:求被录取的概率
连接:http://acm.hdu.edu.cn/showproblem.php?pid=1203


#include <iostream> using namespace std; const int MAX=10000+10; int v[MAX]; double w[MAX]; double dp[MAX]; double cmp(double a,double b) { return a>b?a:b; } int main() { int n,m; while(scanf("%d%d",&n,&m),n+m) { memset(w,0,sizeof(w)); memset(v,0,sizeof(v)); memset(dp,0,sizeof(dp)); //for(int i=1;i<MAX) for(int i=1;i<=m;i++) { scanf("%d%lf",&v[i],&w[i]); } for(i=1;i<=m;i++) { for(int j=n;j>=v[i];j--) { dp[j]=cmp(dp[j],1-(1-dp[j-v[i]])*(1-w[i])); } } printf("%.1lf%%\n",100*dp[n]); } return 0; }