日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

poj3296--Rinse(三分)

發布時間:2024/4/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj3296--Rinse(三分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:點擊打開鏈接

題目大意:有一個酒桶容量為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 ;}elsehigh = 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(三分)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。