P4712 「生物」能量流动
题目描述
生物课上,小 F 学习到了食物链、食物网的相关内容。
他学到,能量是逐级递减的。比如在食物链上,两个链接起来的生物 A \rightarrow BA→B(意思是 BB 吃 AA)之间的能量传递效率最多只有 \frac 1 5
5
1
;而研究种间关系,能够使能量流向对人类最有益的部分。
现在,小 F 想研究一下能量流动的关系,于是他在脑海里创造了一个生态的系统。
在这个生态的系统里,有 n+2n+2 种生物,其中 00 是生产者,整个生态系统所流经的能量由它固定;你是贪婪的顶级掠食者 n + 1n+1,可以捕食所有生物;其他的掠食者 [1, n][1,n] 各有各的喜好,只会捕食编号在 [0, r_i][0,r
i
] 的生物。由于天然形成的强弱顺序,上述关系满足 r_i \leq r_{i + 1}(1 \leq i < n),r
i
≤r
i+1
(1≤i<n), r_i < i(1 \leq i \leq n)r
i
<i(1≤i≤n)。
每种动物需要摄取至少 a_ia
i
单位能量才能存活;一个生物摄取到的能量可以传递给捕食者,但传递效率都不超过 \frac 1 5
5
1
。也就是说,假设该动物捕获了 b_ib
i
单位的能量,所有捕食它的掠食者得到的能量总和 c_ic
i
,那么有:
b_i \geq a_ib
i
≥a
i
c_i \leq \frac 1 5 b_ic
i
≤
5
1
b
i
你希望知道,在所有生物都存活的情况下,在最优情况下你能获取到的最大能量是多少。
输入格式
输入第一行两个个整数 n, a_0(1 \leq n \leq 10 ^ 5, 1 \leq a_0 \leq 10 ^ 9)n,a
0
(1≤n≤10
5
,1≤a
0
≤10
9
)。a_0a
0
是生产者固定的能量值。
接下来 nn 行,每行 22 个正整数,表示 a_i, r_i(1 \leq a_i \leq 10 ^ 9)a
i
,r
i
(1≤a
i
≤10
9
)。
数据保证,0\leq r_i < i, r_i \leq r_{i + 1}0≤r
i
<i,r
i
≤r
i+1
。
输出格式
输出一行一个浮点数,表示你——顶级掠食者——能得到的最大能量。如果不能使得所有生物存活(包括你自己),请输出 -1−1。
你的答案与参考答案的相对误差或者绝对误差不超过 10 ^ {-8}10
−8
即被认为是正确的。如果你的程序是正确的,可以不用考虑精度问题。
输入输出样例
输入 #1复制
2 9
1 0
1 1
输出 #1复制
0.2000000
输入 #2复制
2 9
1 0
1 0
输出 #2复制
-1
输入 #3复制
2 10
1 0
1 0
输出 #3复制
0.4000000
说明/提示
样例 1 解释
最优情况下:
1 号掠食者捕食生产者 0,捕食 5 点能量,传递效率为 \frac 1 5
5
1
,得到 1 点能量。
2 号掠食者捕食生产者 0,捕食 4 点能量,传递效率为 \frac 1 5
5
1
,得到 0.8 点能量。
2 号掠食者捕食掠食者 1,捕食 1 点能量,传递效率为 \frac 1 5
5
1
,得到 0.2 点能量。
可怜的你只能捕获 2 号掠食者的能量,捕食 1 点能量,得到 0.2 点能量。
样例 2, 3 解释
由于 2 号掠食者开始减肥不吃肉了(也有可能是打不过 1 了),所以所需的生产者能量从 9 点变成了 10 点。
子任务
子任务 1(21 \mathrm{pts}) : n \leq 1001(21pts):n≤100;
子任务 2(89 \mathrm{pts}) : n \leq 10 ^ 52(89pts):n≤10
5
。
#include <bits/stdc++.h>
using namespace std;
//贪心算法,对于每个动物,尽量吃编号靠前的以最小化能量流失
//满足所有生物需求后,剩下的是我们所能获取的最大能量
long long n,t,ans=0;//全局变量默认初始值为0;
long long int a[100002],r[100002];
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);//加快执行速度cin>>n>>a[0];ans=a[0];for(int i=1; i<=n; i++)//此循环不包括人{cin>>a[i]>>r[i];//输入每种生物至少需要摄取的能量a[i]和最多能捕食的层的上限for(int j=t+1; j<=r[i]; j++)//从上一生物捕食的层数的上限循环到该生物捕食层的上限{ans+=a[j];//计算剩余能量之和}t=r[i];ans-=5*a[i];//判断余量是否足够下一层生物存活if(ans<0)cout<<"-1",exit(0);}for(int i=t+1;i<=n;i++){ans+=a[i];}printf("%.8lf",ans/5.0);return 0;
}
P4712 「生物」能量流动相关推荐
- 真·降维打击:这篇SIGGRAPH 2020论文帮你「想象」三维生物眼里的四维空间
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 四维空间是什么样子?里面的物体如何运动?一篇 SIGGRAPH 2020 论文帮我们 "想象 ...
- 区块链可以当仁不让地成为元宇宙的「母体」,并不断为元宇宙的发展提供能量
当元宇宙的发展开始逐渐变得深入与完善,区块链在其中所发挥的重要作用,正在逐步显现.对于很多人来讲,特别是对于那些仅仅只是将区块链看成是一个概念的人们来讲,这并不是他们愿意看到的.因为他们之所以会放弃区 ...
- 新年「开门红」| 送你 108 份开工牛气能量!
人勤春来早 牛年向前 "犇"! 正月初七,迎来新年第一个工作日 祝大家开工大吉! 小楼为你送上 108 门免费项目课程,愿你新年第一天,元气加满,更上一层楼! 具体课程如下,如果 ...
- 3D建模复原汤加火山爆发!1000颗原子弹当量,人在英国刚被「震」到
视学算法报道 编辑:好困 袁榭 [新智元导读]2022年汤加火山爆发,字面意义上震动了半个地球的人.从在家DIY树莓派套装监测震波的发烧友,到灾害科学家:从断网受灾的当地人,到刚找到的当地中国 ...
- 李飞飞对话顶级神经科学家纽瑟姆:大脑也做「微积分」,最高效GPU依然很浪费...
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来源:HAI 编辑:白峰 [导读]最近,李飞飞在斯坦福HAI座谈会上对话著名的神经生理 ...
- AI领域「听风者」:声纹识别5大核心知识点!
https://www.toutiao.com/a6691897670778225160/ 在移动互联网大行其道的时代,人们不用出门不用见面就可以完成很多事情,比如购物.生活缴费.投资理财等,在享受着 ...
- 对话加拿大工程院于非院士:寻找 AI 领域的「香农定理」
来源:AI科技评论本文为约7450字,建议阅读14分钟 本文介绍了加拿大工程院院士于非在人工智能定义等方面的学术观点. 我相信智能是一种自然现象,就像岩石滚动和冰雪融化般自然的现象.--摘自于非著作& ...
- 「上帝粒子」发现10周年
来源:FUTURE | 远见 选编:闵青云 2012年7月4日,欧洲核子研究中心(CERN)宣布发现了「上帝粒子」(希格斯玻色子).希格斯玻色子是粒子物理学标准模型预言的一种玻色子,正是它的存在, ...
- 「读书」人生十二法则
现代人欠缺的,不是知识,而是实现的能力,更准确地说,是付诸行动的心理素质.在<人生十二法则>中,著名心理学家乔丹·彼得森的将人类数千年来哲学思考.神话故事中的精神财富与心理学.生物学.神经 ...
最新文章
- 公钥与私钥,HTTPS详解
- 安装Ubuntu13.10后必做的10件事
- Mybatis之一级缓存,二级缓存
- Mysql 修改 复杂的汇总_MySQL数据分析:复杂查询
- Git学习(一)git服务器的简易搭建
- java after 函数_Java中关于Date的before函数和after函数的使用
- java nio is例子,Java Buffer isDirect()用法及代码示例
- [文章备份]RSS阅读器在手机上APP配置方法
- 嘉年华回顾丨李海翔带你解密腾讯TDSQL数据库的技术与未来
- C++设计模式详解之命令模式解析
- 如何一站式高效管理固定资产?
- Android HttpClient及连接管理器
- 企划学院第十二期游学活动“聚合”郑州站圆满落下帷幕!
- html化学式编辑器,ChemDraw Pro(化学反应方程式编辑器软件)
- matlab中 概率密度估计ksdensity,k-s检验kstest和kstest2(单/双样本检验数据是否符合某种分布)
- 单细胞测序原理10X UMI Barcode
- 学习笔记之Qt从入门到精通(二)
- 使用python绘画蟒蛇
- 大学计算机网络配置实验报告,北京理工大学-计算机网络实践-IP路由配置与路由协议分析实验报告.docx...
- floor ceil fract 函数的区别