gym/101194 E. Bet(贪心,精度)
发布日期:2021-06-30 10:32:33
浏览次数:2
分类:技术文章
本文共 1014 字,大约阅读时间需要 3 分钟。
n n n个人,每个人有属性 A i , B i A_i,B_i Ai,Bi
选出一些人给第 i i i个人投钱 x i x_i xi,使得 x i ∗ ( 1 + B i A i ) > ∑ x j x_i*(1+\frac{B_i}{A_i})>\sum x_j xi∗(1+AiBi)>∑xj
问你最多能选出多少人投钱(投多少无所谓,不关心)
设最后选了 k k k个人
化简一下 x i ∗ A i + B i A i > ∑ j = 1 k x j x_i*\frac{A_i+B_i}{A_i}>\sum\limits_{j=1}^k x_j xi∗AiAi+Bi>j=1∑kxj
也就是 x i ∑ j = 1 k x j > A i A i + B i \frac{x_i}{\sum\limits_{j=1}^k x_j}>\frac{A_i}{A_i+B_i} j=1∑kxjxi>Ai+BiAi
把 i i i取值为 [ 1 , k ] [1,k] [1,k]得到 k k k个不等式,相加得到
1 > ∑ A i A i + B i 1>\sum\frac{A_i}{A_i+B_i} 1>∑Ai+BiAi
所以我们贪心选 A i A i + B i \frac{A_i}{A_i+B_i} Ai+BiAi小的,不大于一就行
#includeusing namespace std;const int maxn = 1009;int casenum;long double p[maxn];int main(){ int t; cin >> t; while( t-- ) { int n; scanf("%d",&n); long double x,y; for(int i=1;i<=n;i++) { scanf("%Lf:%Lf",&x,&y); p[i] = x/(x+y); } long double sum = 0; sort( p+1,p+1+n ); int ans = 0; for(int i=1;i<=n;i++) { sum += p[i]; if( sum>=1 ) break; ans++; } printf("Case #%d: %d\n",++casenum,ans); }}
转载地址:https://issue-is-vegetable.blog.csdn.net/article/details/116046007 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 22时11分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vim中文帮助的安装
2019-04-30
linux下获取所有文件夹和文件,支持nfs和xfs
2019-04-30
用分区魔术师把linux所占的分区删除后重写mbr
2019-04-30
软件架构师书籍
2019-04-30
Java程序员到架构师的推荐阅读书籍
2019-04-30
LFS、BLFS、ALFS、HLFS的区别
2019-04-30
国外知名网站评出对程序员最具影响力的图书(附下载)
2019-04-30
敏捷开发与极限编程
2019-04-30
如何获取system()函数的pid
2019-04-30
iconv 文件编码转换
2019-04-30
QLineEdit设置ip输入规则
2019-04-30
Linux串口编程
2019-04-30
交互设计专业书籍推荐(内有部分书籍电子版下载)
2019-04-30
strcasestr函数
2019-04-30
h264 ES流文件通过计算first_mb_in_slice区分帧边界
2019-04-30
设置系统时间
2019-04-30
C++模板学习和C++ 模板套模板
2019-04-30
合 JSONP 和 jQuery 快速构建强大的 mashup
2019-04-30
自制基于地图的 mashup
2019-04-30
成为优秀程序员的十个有效方法
2019-04-30