题目链接:点击打开链接

题目大意:有一个酒桶容量为Vc。里面还有Vw的酒,如今用Vb的水去刷酒桶,每次酒桶的内壁上会留下Vr的液体,最多能够刷k次,问怎么样刷酒桶。能够让酒桶里面的就最少。

假设Vb+Vw < Vc,那么直接输出0

那么其他情况就保证了一定能够向外倒水。所以终于的桶里面剩余的液体是Vr。仅仅要保证Vr内的酒的浓度最小。那么剩余的酒也就是最少的。

能够假设用的水是x1,x2,x3,,,,计算每次刷通后的浓度。

第一次刷:Vw / (Vw+x1)

第二次刷:Vw / (Vw+x1) * Vr / (Vr+x2)

第三次刷:Vw / (Vw+x1) * Vr / (Vr+x2)
* Vr / (Vr+x3)

这样也就能看出来,假设洗刷k次,那么终于的浓度是Vw / (Vw+x1)
* Vr / (Vr+x2)
* Vr / (Vr+x3),,,,* Vr / (Vr+xk)

那么怎样保证它的值最小呢?假设我们能确定一个x1,那么x2+x3,,,+xk = Vb-x1,这种条件怎么保证Vr
/ (Vr+x2) * Vr / (Vr+x3),,,,* Vr / (Vr+xk)尽量小。我们能够发现,假设x2 = x3 = x4 ,, = xk计算出的结果会比不同的更小,假设x的值都是(Vb-x1)/(k-1),那么k越大,得到的值就越小。(Vb-x1)/(k-1)越大,那么得到的值越小。

所以选择最多的刷洗次数,从第2次到第k次,每次用水同样,那么剩下的就是x1怎么确定。

假设x1添加。那么Vw
/ (Vw+x1)会减小。(Vb-x1)/(k-1)会减小,(Vr/(Vr+x))^(k-1)就会增大,总的浓度不能确定,所以用三分查找,找到一个最小的结果。

注意

1、三分的时候桶内的就有Vw。注意三分的上下界。

2、在计算浓度的时候,向桶内加的水由Vb-x算出,可是这个值不能超多Vc-Vr

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std ;
#define eqs 1e-9
int k ;
double vb , vw , vr , vc ;
double solve(double x) {
double ans = vw/(vw+x) ;
if( k > 1 ) {
double y = min( (vb-x)/(k-1), vc-vr) ;
for(int i = 1 ; i < k ; i++)
ans *= vr/(vr+y) ;
}
return ans ;
}
int main() {
while( scanf("%d", &k) != EOF ) {
if(k == 0) break ;
scanf("%lf %lf %lf %lf", &vb, &vw, &vr, &vc) ;
if( vr-vw-vb > eqs ) {
printf("0\n") ;
continue ;
}
double low = max(0.0,vr-vw) , mid1 , mid2 , high = min(vb,vc-vw) ;
while( low + eqs < high ) {
mid1 = (low + high)/2.0 ;
mid2 = (mid1 + high)/2.0 ;
if( solve(mid1) > solve(mid2) ) {
low = mid1 ;
}
else
high = mid2 ;
}
printf("%d", k) ;
printf(" %.2f", high) ;
if( k > 1 ) high = min(vc-vr,(vb-low)/(k-1)) ;
for(int i = 1 ; i < k ; i++) {
printf(" %.2f", high) ;
}
printf("\n") ;
}
return 0 ;
}

poj3296--Rinse(三分)的更多相关文章

  1. hdu3714 三分找最值

    Error Curves Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  2. BZOJ 1857 传送带 (三分套三分)

    在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...

  3. hdu 4717(三分求极值)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4717 思路:三分时间求极小值. #include <iostream> #include ...

  4. HDU2438 数学+三分

    Turn the corner Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. 三分之一的程序猿之社交类app踩过的那些坑

    三分之一的程序猿之社交类app踩过的那些坑 万众创新,全民创业.哪怕去年陌生人社交不管融资与否都倒闭了不知道多少家,但是依然有很多陌生人社交应用层出不穷的冒出来.各种脑洞大开,让人拍案叫起. 下面我们 ...

  6. 基于jPlayer的三分屏制作

    三分屏,这里的三分屏只是在一个播放器里同时播放三个视频,但是要求只有一个控制面板同时控制它们,要求它们共享一个时间轨道.这次只是简单的模拟了一下功能,并没有深入的研究. 首先,需要下载jPlayer, ...

  7. 【BZOJ-1857】传送带 三分套三分

    1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1077  Solved: 575[Submit][Status][ ...

  8. ACM : HDU 2899 Strange fuction 解题报告 -二分、三分

    Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  9. bzoj1857: [Scoi2010]传送带--三分套三分

    三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...

  10. poj3301Texas Trip(三分)

    链接 这题还真没看出来长得像三分.. 三分角度,旋转点. 最初找到所有点中最左边.右边.上边.下边的点,正方形边长为上下距离和左右距离的最大值,如图样例中的四个点(蓝色的),初始正方形为红色的正方形. ...

随机推荐

  1. docker容器如何安装vim

    mv /etc/apt/sources.list /etc/apt/sources.list.bak && \     echo "deb http://mirrors.16 ...

  2. Hadoop Hive概念学习系列之hive里的用户定义函数UDF(十七)

    Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache ...

  3. Android RecyclerView利用Glide加载大量图片into(Target)导致OOM异常

    学过android的人应该都知道Glide是一个无比强大的图片加载库,它内部已经提供了很好的缓存机制供我们选择,我们只需一个参数调用即可(DiskCacheStrategy()),而不必像Univer ...

  4. Sql Server 优化 SQL 查询:如何写出高性能SQL语句

    1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条 ...

  5. 学习随笔-Java WebService

    webService 可以将应用程序转换成网络应用程序.是简单的可共同操作的消息收发框架. 基本的webService平台是 XML 和 HTTP. HTTP 是最常用的互联网协议: XML 是 we ...

  6. [Windows Server 2008] IIS自带FTP配置方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:IIS自带FT ...

  7. CentOS7配置VSFTP服务器

    [1] 安装VSFTP [root@localhost ~]# yum -y install vsftpd [2] 配置vsftpd.conf文件 [root@localhost ~]# vi /et ...

  8. CNN结构:色彩特征提取-从RGB空间到HSV空间(色彩冷暖判断)

      转自知乎和百度百科:从零开始学后期             文章: 冷暖色区分?冷暖肤色适用于那些色系的彩妆?    文章:干货 |如何判断人体色冷暖?如何判断色彩冷暖?(值得收藏研读!) -蒜苗 ...

  9. CSS (层叠样式表)

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS不仅可以静态 ...

  10. C# 获得星期几

    var temp = System.DateTime.Today.ToString("dddd", new System.Globalization.CultureInfo(&qu ...