1203 I NEED A OFFER! 简单解题报告
01背包问题的变形题,很简单了,下面是偶的AC代码。初始化是全部赋值为1,即100%。memset函数是不行的哦。
#include <iostream> using namespace std; const int MAX=10001; int c[MAX]; double dp[MAX]; double v[MAX]; int main() { int n,m,i,j; double t; while(cin>>n>>m && (n||m)) { for(i=0;i<m;i++) { cin>>c[i]>>t; v[i]=1-t; } for(i=0;i<MAX;i++) dp[i]=1; for(i=0;i<m;i++) for(j=n;j>=c[i];j--) if(dp[j]>(t=dp[j-c[i]]*v[i])) dp[j]=t; printf("%.1f%%\n",(1-dp[n])*100); } }