标签:des style blog io ar color os sp for
解题思路:攒下的钱n相当于包的容量,然后是m个学校的申请费用,申请费用相当于每一个物品的消耗,得到offer的概率相当于每一个物品的价值。
因为要求的是至少得到一份0ffer的概率的最大概率,可以转化成一份offer都得不到的最小概率
即状态转移方程 f[v]=min(f[v],f[v-w[i]*(1-c[i])),f[v]的值初始化为 1.0
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17262 Accepted Submission(s): 6888
#include<stdio.h> #include<string.h> int w[10010]; double f[10010],c[10010]; double min(double a,double b) { if(a<b) return a; else return b; } int main() { int n,m,i,v; double t; while(scanf("%d %d",&n,&m)!=EOF&&(n||m)) { for(i=1;i<=m;i++) { scanf("%d %lf",&w[i],&c[i]); } for(i=0;i<=n;i++) f[i]=1.0; for(i=1;i<=m;i++) { for(v=n;v>=w[i];v--) { f[v]=min(f[v],f[v-w[i]]*(1-c[i])); } } t=(1-f[n])*100; printf("%.1lf",t);printf("%%\n"); } }
HDU 1203 I NEED A OFFER!【01背包】
标签:des style blog io ar color os sp for
原文地址:http://www.cnblogs.com/wuyuewoniu/p/4154585.html