01背包(简单dp) HDU 1203 I need Offer

来源:互联网 发布:prod.server.js 编辑:程序博客网 时间:2024/06/05 15:05


/***************Problem from : HDU 1203Problem describe :   01背包的应用   此题要注意   将至少获得一个Offer的最大概率   转换成   一个Offer也没有获得的最小概率data:2016.12.5****************/#include<iostream>#include<cstdlib>#include<cstdio>#include<algorithm>#include<cmath>#include<map>#include<stack>#include<queue>#include<ctime>#include<cstring>#include<vector>#include<string>#define ll __int64#define inf 0x3f3f3f3f3fusing namespace std;double min(double x, double y) {return (x<y)?x:y;} struct node{int v;double p;}num[10005];double ans[10005];int main(){//  freopen("in.txt","r",stdin);//  freopen("out.txt","w",stdout);int i, j, n, m;while(scanf("%d %d", &n, &m), n||m){for(i=0; i<m; i++) scanf("%d %lf", &num[i].v, &num[i].p);for(i=0; i<n+5; i++) ans[i]=1;for(i=0; i<m; i++){for(j=n; j>=num[i].v; j--){ans[j] = min(ans[j], ans[j-num[i].v]*(1-num[i].p));}}printf("%.1lf%%\n", (1-ans[n])*100);//这里要注意格式。。因格式wa了四次。。心疼}return 0;}


0 0
原创粉丝点击