标签:
Description
Input
Output
Sample Input
10 3 4 0.1 4 0.2 5 0.3 0 0
样例输出
44.0%
___________这是个动态问题,,同样是01背包,,,因为要求至少一份的情况 所以是求一个都被不录取的概率的最小值 反之用1减去 得到至少一份的概率 其中初始化非常重要 因为是概率要相乘 所以都初始化为一
#include<algorithm> #include<iostream> #include<cstdio> #include<cstring> #include<queue> #include<math.h> using namespace std; #define INF 0x3f3f3f3f #define N 10234 struct node { int x; double e,f; }q[N]; double dp[N]; int main() { int n,m; while(scanf("%d%d",&n,&m),n+m) { for(int i=0;i<m;i++) { scanf("%d%lf",&q[i].x,&q[i].e); q[i].f=1-q[i].e; } for(int i=0;i<=n;i++) dp[i]=1;for(int i=0;i<m;i++) { for(int j=n;j>=q[i].x;j--) { dp[j]=min(dp[j],dp[j-q[i].x]*q[i].f); ///printf("%f\n",dp[j]); } } printf("%.1f%%\n",(1-dp[n])*100); } return 0; }
http://acm.hust.edu.cn/vjudge/contest/125771#problem/F 动态01背包
标签:
原文地址:http://www.cnblogs.com/a719525932/p/5731592.html