HDOJ 1203 I NEED A OFFER!(简单背包)

来源:互联网 发布:单片机烧录器制作 编辑:程序博客网 时间:2024/06/05 04:04

求得不到 offer 的最小概率即可。

显然可以转化为简单背包。

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 10100, maxv = 10100;int n, m;int c[maxn];double p[maxn];double dp[maxv];int main(){    while(~scanf("%d%d", &m, &n) && (n || m)) {        for(int i = 0; i < n; i++) {            scanf("%d%lf", &c[i], &p[i]);            p[i] = 1.0 - p[i];        }        for(int i = 0; i <= m; i++) dp[i] = 1;        for(int i = 0; i < n; i++) {            for(int v = m; v >= 0; v--) {                if(v-c[i] >= 0)                    dp[v] = min(dp[v], dp[v-c[i]]*p[i]);            }        }        double ans = (1-dp[m]) * 100;        printf("%.1lf%%\n", ans);    }    return 0;}


0 0
原创粉丝点击