題目鏈結
思路:簡單轉化之後,此題就是給你乙個小數,叫你輸出值最接近的分數,劃成最簡形式。
考慮二分分數。
若不知道起始範圍,則可以從:01−
10(+
oo
)\frac - \frac(+oo)
10−01
(+o
o)進行二分。
出於效率和最簡分數的考慮,我們每次二分的值不是求端點的平均數。
比如對於[ab
,cd]
[\frac,\frac]
[ba,d
c],我們二分的新的分數為:
a +c
b+
d\frac
b+da+c
然後進行比較而決定左移右移即可。
另外我們可以先算答案分數的整數值,來縮小起始的二分範圍。
如果第乙個不小於該小數的整數值為val,則範圍應該為:
[ (v
al−1
)1,v
al1]
[\frac,\frac]
[1(val
−1)
,1va
l]**:
#include
using
namespace std;
typedef
long
long ll;
typedef
long
double lb;
ll k,lz,rz,lm,rm,val,a,b;
lb mn,aim;
lb abs
(lb x)
intmain()
lz = val-
1,lm =
1;aim = k*k;
rz = val,rm =
1;mn =
1e60
;while(1
)if(now > aim)
else
}printf
("%i64d/%i64d\n"
,a,b);}
return0;
}
Codechef MONSTER 整體二分 分塊
有n個敵人,編號為0到n 1,每個敵人都有乙個血量h。現在有q次操作,每次給出兩個數x和y,表示將所有編號為x的子集 二進位制下 的敵人血量都減去y。要求每次操作後輸出還剩下多少個敵人的血量大於0。n 217,m 218,h,y 109n 2 17,m 218,h y 10 9已經頹廢到開始寫題了。...
二分 分蛋糕問題
題意 n種蛋糕,每個半徑給出,要分給f 1個人,要求每個人分的體積一樣 形狀可以不一樣 而且每人只能分得一種蛋糕 不能多種蛋糕拼在一起 求每人最大可以分到的體積。輸入 3 3 34 3 3 1 24 510 5 1 4 2 3 4 5 6 5 4 2 輸出 25.1327 3.1416 50.265...
HDU 1597 二分 數學
題目鏈結 思路 不知道為什麼我的搜尋專題出現了這道題.好像是可以折半搜尋,但感覺複雜度很高,觀察了一下 第乙個數 1位 第二個數 2位 第n個數 n位 那如果連起來,連線完第n個數,這個數的位數為 1 2 3 4 n 這不正是等差數列求和嗎?然後我用下面的 簡單測了一下。include using ...