I NEED A OFFER!

来源:互联网 发布:wifi显示不安全网络 编辑:程序博客网 时间:2024/05/21 10:00

/* 题意中文的,很好理解,基础的01背包问题。不过有个地方我很诧异,题目竟然有不花钱获得录取概率的,哎,又一次先入为主了,果断丢了这种情况,wa了一次! */

点击打开链接

#include < iostream >#include < cstring  >#define  N     100005using namespace  std;double dp[N];struct node{int v;double p;}a[N];int main (){//freopen("ts.txt","r",stdin);double y,r;int i,j,n,m,x,t;while(~scanf("%d%d",&n,&m),n||m){for(i=0;i<=n;i++)dp[i]=1;for(i=0;i<m;i++){scanf("%d%lf",&x,&y);a[i].v=x ; a[i].p=1-y;}for(t=n,i=0;i<m;i++){for(j=t;j>=a[i].v;j--)if(dp[j]>dp[j-a[i].v]*a[i].p)dp[j]=dp[j-a[i].v]*a[i].p;}for(r=1,i=0;i<=t;i++) r=r<dp[i]?r:dp[i];printf("%.1lf%%\n",(1-r)*100.0);}return 0;}
/*递推公式 dp[i][j]=max{d[i-1][j],dp[i][j-m]*p};m代表钱,p代表概率 */
原创粉丝点击