博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu I NEED A OFFER!
阅读量:7099 次
发布时间:2019-06-28

本文共 930 字,大约阅读时间需要 3 分钟。

这道题是道很基本的0/1背包的问题,为了使解题很简单一点,可以将题目中要求的最大概率转换成不能录取的最小概率,这样1-dp[n]即为至少有一个offer的最大概率。状态方程

为:dp[j]=min{dp[j],dp[j-price[i]]*chance[i]};

1 #include"iostream" 2 #include"stdio.h" 3 #include"algorithm" 4 #include"string.h" 5 #include"cmath" 6 #include"queue" 7 #define mx 10005 8 using namespace std; 9 int price[mx];10 double chance[mx];11 double dp[mx];12 int main()13 {14     int n,m,i,j,k;15     while(cin>>n>>m,n||m)16     {17         for(i=1;i<=m;i++)18         {19             cin>>price[i]>>chance[i];20             chance[i]=1-chance[i];21         }22         for(i=0;i<=n;i++) dp[i]=1;23         for(i=1;i<=m;i++)24         {25             for(j=n;j>=price[i];j--)26             {27                 if(dp[j]>dp[j-price[i]]*chance[i])dp[j]=dp[j-price[i]]*chance[i];28             }29         }30         printf("%.1lf%%\n",(1-dp[n])*100);31     }32     return 0;33 }
View Code

 

转载于:https://www.cnblogs.com/acm-jing/p/4314369.html

你可能感兴趣的文章
C# 面试题大全
查看>>
「THUPC2018」赛艇 / Citing
查看>>
linux shell 命令学习(4) cut - remove sections from each line of files
查看>>
python正则提取关键字
查看>>
php 中 set_time_limit 理解
查看>>
28 写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(进阶)...
查看>>
MHA切换过程:
查看>>
HanLP汉语言分析框架
查看>>
SQLite 日期操作
查看>>
热词分享
查看>>
phpcms相关
查看>>
thinkphp空控制器的处理
查看>>
Unity优化----drawcall系列
查看>>
通过按键实现LED灯的亮灭(含两种情况)
查看>>
C#中常用接口介绍
查看>>
swift 纯代码自定义控件
查看>>
使用Groovy的sql模块操作mysql进行多种查询
查看>>
解决mysql 主从数据库同步不一致的方法
查看>>
字符编码笔记:ASCII,Unicode 和 UTF-8
查看>>
Stack
查看>>