Hdu 2289 Cup(二分 理解題意)

2021-09-25 13:53:55 字數 1828 閱讀 5570

the whu acm team has a big cup, with which every member drinks water. now, we know the volume of the water in the cup, can you tell us it height?

the radius of the cup』s top and bottom circle is known, the cup』s height is also known.

the input consists of several test cases. the first line of input contains an integer t, indicating the num of test cases.

each test case is on a single line, and it consists of four floating point numbers: r, r, h, v, representing the bottom radius, the top radius, the height and the volume of the hot water.

technical specification

t ≤ 20.

1 ≤ r, r, h ≤ 100; 0 ≤ v ≤ 1000,000,000.

r ≤ r.

r, r, h, v are separated by one whitespace.

there is no empty line between two neighboring cases.

for each test case, output the height of hot water on a single line. please round it to six fractional digits.

1100 100 100 3141562

99.999024

題意:已知杯子形狀為杯底是小圓,杯口是大圓;題目給出:小圓(杯底)半徑r、大圓(杯口)半徑r、水的體積v、杯子的總高度h

開始沒理解題意就開始一頓猛操作。。。。。。。

通過已經可以知道,水的高度h一定小於杯子總高度h,於是可以通過二分來尋找出水的高度h

重點注意**中水的半徑rr的由來(利用中學數學相似知識求得):

r r−

rr−r

\frac

r−rrr−

r​=m id

h\frac

hmid

​於是有rr=(r−

r)∗m

id

h\frac

h(r−r)

∗mid

​+r然後就是圓台的體積公式

1/3*pi h *(r^2+r *r +r^2)

具體見**:

#include

#include

#include

#include

#include

#define pi acos(-1.0)

//圓周率

#define exp 1e-9

//確定一精度

using

namespace std;

intmain()

printf

("%.6f\n"

,mid);}

return0;

}

HDU 2289 CUP 解題報告

題目鏈結 題目大意 這道題就是給你乙個圓台,裡面裝了一些水,現在告訴你圓台上下底半徑,高度,水的體積,問你水的高度是多少。思路 數學題,利用二分求解,保證精度 1.推導出高為h時的半徑r1,用r,r,h,h表示,2.代到公式3 v pi h r1 r1 r1 r r r 課得到方程ah bh 2 c...

hdu 2289 基礎二分

本以為二分的題嘛,有了模板一切都好說,這道題發出來其實有抄襲的嫌疑,算是給自己寫的糾正性文章了,原來的想法每次二分的條件是相似邊比的立方大於體積比,後來發現計算多誤差大,然後就變成了所求水的體積大於實際水的體積,結果因為強行套模板,還是錯55555.所以模板不是看懂會用就行了,還是要懂其中的思想啊。...

POJ 2289 二分 匈牙利

題意 把 n 個人分成 m 組,給出 n 個人各自可選的組別集合,求一種合法的分配方案,使得人數最多的組的人數最少 分析 最多最少,一般二分跑不了,然後求分配就匈牙利稍微變形就可以了 變形是為了適應二分 include include include include using namespace ...