博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU1203 I NEED A OFFER! 【贪心】
阅读量:5346 次
发布时间:2019-06-15

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

I NEED A OFFER!

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15951    Accepted Submission(s): 6331
Problem Description
Speakless非常早就想出国,如今他已经考完了全部须要的考试,准备了全部要准备的材料,于是,便须要去申请学校了。要申请国外的不论什么大学。你都要交纳一定的申请费用。这但是非常惊人的。

Speakless没有多少钱,总共仅仅攒了n万美元。

他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每一个学校都有不同的申请费用a(万美元),而且Speakless预计了他得到这个学校offer的可能性b。

不同学校之间是否得到offer不会互相影响。

“I NEED A OFFER”。他大叫一声。

帮帮这个可怜的人吧。帮助他计算一下,他能够收到至少一份offer的最大概率。(假设Speakless选择了多个学校,得到随意一个学校的offer都能够)。

 
Input
输入有若干组数据,每组数据的第一行有两个正整数n,m(0<=n<=10000,0<=m<=10000)
后面的m行。每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。

输入的最后有两个0。

 
Output
每组数据都相应一个输出。表示Speakless可能得到至少一份offer的最大概率。用百分数表示,精确到小数点后一位。
 
Sample Input
 
10 3 4 0.1 4 0.2 5 0.3 0 0
 
Sample Output
 
44.0%
Hint
You should use printf("%%") to print a '%'.

#include 
#include
#define maxn 10002using namespace std;struct Node{ int w; double v, pos;} arr[maxn];bool cmp(Node a, Node b){ return a.pos > b.pos;}int main(){ int n, m, i; double ans; while(scanf("%d%d", &n, &m), n || m){ for(i = 0; i < m; ++i){ scanf("%d%lf", &arr[i].w, &arr[i].v); arr[i].pos = arr[i].v / arr[i].w; } sort(arr, arr + m, cmp); ans = 1; for(i = 0; i < m; ++i){ if(n >= arr[i].w){ n -= arr[i].w; ans *= (1.0 - arr[i].v); }else break; } printf("%.1lf%%\n", 100.0 * (1 - ans)); } return 0;}

转载于:https://www.cnblogs.com/llguanli/p/8341056.html

你可能感兴趣的文章
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
YUI3自动加载树实现
查看>>
kettle导数到user_用于left join_20160928
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
malloc() & free()
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
一个.NET通用JSON解析/构建类的实现(c#)
查看>>
关于这次软件以及pda终端的培训
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>