CTU OPEN 2017 Pond Cascade /// 思维
题目大意:
给定N F 给定N个水池的大小
每个水池都以流量F开始注水
当位置较前的水池注满后 水会溢出到下一个水池
求 最后一个水池开始溢出的时间 和 所有水池全部注满的时间
1.最后一个n水池开始溢出的时间
当 n-1水池 还没溢出 而 n水池 溢出了,说明 n水池 溢出的时间只取决于它自己
当 n-1水池 溢出了 而 n水池 还没溢出时,说明 n-1水池 会影响 n水池 的溢出
而 n-2水池 和 n-1水池 同样如此
由于流量固定为F 此时假设
n-2水池 不影响 n-1水池 的溢出,而 n-1水池 会影响 n水池 时
那么平均一个水池的时间花费为 (n-1容量+n容量)/ F / 2,即最后一个水池开始溢出的时间
从后开始考虑 即考虑 i水池 到 n水池 有影响
那么求得的最小的平均单水池花费 就是 n水池开始溢出的时间
2.所有水池全部注满的时间
由于水只会向后溢出 故所有水池注满的时间较受前面的水池的影响
当 1水池 还未注满 而 2~n水池 已经注满,说明全部水池注满的时间取决于 1水池
同理 当 1~i水池未注满 而 i+1~n水池 已注满,说明全部水池注满的时间取决于 1~i水池的平均单水池花费
那么从前开始考虑 即考虑 1~i水池还未注满而后面的水池都已注满
那么求得的 1~i水池 的最大的平均单水池花费就是 所有水池全部注满的时间
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define mem(i,j) memset(i,j,sizeof(i))
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,r,l) for(int i=r;i>=l;i--)
#define gcd(i,j) __gcd(i,j);
const int N=1e5+;
const int mod=1e9+;
const double eps=1e-; int n;
LL v, c[N]; int main()
{
while(~scanf("%d%lld",&n,&v)) {
inc(i,,n) scanf("%lld",&c[i]);
double ans1=INF,ans2=-INF;
LL sum=;
dec(i,n,) {
sum+=c[i];
double t=(double)sum/(double)(n-i+)/(double)v;
ans1=min(ans1,t);
}
sum=;
inc(i,,n) {
sum+=c[i];
double t=(double)sum/(double)i/(double)v;
ans2=max(ans2,t);
}
printf("%lf %lf\n",ans1,ans2);
} return ;
}
CTU OPEN 2017 Pond Cascade /// 思维的更多相关文章
- Gym - 101670B Pond Cascade(CTU Open Contest 2017 贪心,二分)
题目: The cascade of water slides has been installed in the park recently and it has to be tested. The ...
- Pond Cascade Gym - 101670B 贪心+数学
题目:题目链接 思路:题目让求最下面池子满的时间和所有池子满的时间,首先我们考虑所有池子满的时间,我们从上到下考虑,因为某些池子满了之后溢出只能往下溢水,考虑当前池子如果注满时间最长,那么从第一个池子 ...
- CTU OPEN 2017 Punching Power /// 最大独立集
题目大意: 给定n 给定n个机器的位置 要求任意两个机器间的距离至少为1.3米 求最多能选择多少个机器 至少为1.3米 说明若是位于上下左右一步的得放就不行 将机器编号 将不能同时存在的机器连边 此时 ...
- CTU OPEN 2017 Go Northwest! /// 简单公式
题目大意: 给定n个点 求任选一对点连成的直线斜率为1或-1的概率 对于点(x1,y1) 和 点(x2,y2) 斜率 k=(y1-y2)/(x1-x2) 当k=1 则 (y1-y2)/(x1-x2)= ...
- CTU OPEN 2017 Ice cream samples /// 尺取法
题目大意: 给定n k 接下来n行 给定n个摊位的冰淇淋信息 首先给一个t 表示这个摊位有t个冰淇淋 接下来t个数表示对应冰淇淋的品种 走到连续的几个摊位 会买下走过的摊位的所有的冰淇淋 求 要买下所 ...
- CTU OPEN 2017 Shooting Gallery /// 区间DP
题目大意: 给定n 给定n个数 选定一个区间留下其他消去 要求区间两端的两个数一样 若成功留下一个区间 则在选定区间的基础上 继续进行上述操作 直到无法再选出这样的区间 求最多操作数 按区间长度由短到 ...
- CTU Open Contest 2017
这场题很水.水题我就懒得贴了. B - Pond Cascade 优先队列维护这个水池需要多少时间 或者 直接扫一遍. #include <cstdio> #include <cst ...
- Python(三)基础篇之「模块&面向对象编程」
[笔记]Python(三)基础篇之「模块&面向对象编程」 2016-12-07 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
- Python(四)基础篇之「文件对象&错误处理」
[笔记]Python(四)基础篇之「文件对象&错误处理」 2016-12-08 ZOE 编程之魅 Python Notes: ★ 如果你是第一次阅读,推荐先浏览:[重要公告]文章更新. ...
随机推荐
- Python 学习笔记13 类 - 创建和简单使用
介绍: 面向对象编程是一种非常有效的软件编写方法之一,在面向对象编程中,我们会编写表示现实世界中的事物或者情景的类,并基于类来创建对象. 在编写类的的时候,这些类对象一般都有通用的行为或者属性.基于类 ...
- PostgreSQL 荣获 2019 年 O'Reilly 终身成就奖
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来自:开源中国社区 https://www.oschina.net/news/108436/pg-wins-2019-ore ...
- 纯css隐藏移动端滚动条解决方案(ios上流畅滑动)---转载
html代码展示(直接复制代码保存至本地文件运行即可): <!DOCTYPE html> <html lang="en"> <head> < ...
- 【算法】快速数论变换(NTT)初探
[简介] 快速傅里叶变换(FFT)运用了单位复根的性质减少了运算,但是每个复数系数的实部和虚部是一个余弦和正弦函数,因此系数都是浮点数,而浮点数的运算速度较慢且可能产生误差等精度问题,因此提出了以数论 ...
- Centos7 安装rar,unrar,zip,unzip
1.yum 安装unrar # yum install unrar rar命令 # rar a test.rar test.jpg test.png 这条命令是将test.jpg和test.png压缩 ...
- Linux: 给右键菜单加一个“转换图片为jpg格式”
Linux上通常都会安装imagemagick这个小巧但又异常强大的工具.这个软件提供了一系列很好用的功能.这里说一说如何使用它的convert命令转换图片为jpg格式,以及如何把它添加到Thunar ...
- java中wait()和sleep()的区别
前言 以前只知道一个结论,但是没法理解,现在水平上来了,自己代码中写了一个验证的方法. 1.先上结论:wait()会释放持有的锁,sleep()不会释放持有的锁 2.验证:看代码运行结果. packa ...
- pycharm查找替换快捷键
查找:CTRL + F 替换:CTRL + R 如果想删除,替换那一栏不填就可以了
- 【leetcode】1006. Clumsy Factorial
题目如下: Normally, the factorial of a positive integer n is the product of all positive integers less t ...
- java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
查询视图时报错:java.sql.SQLException: Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_ ...