王仙女將你提供的答案填在《葵花寶典》上,突然,寶典發出耀眼的白光,一股強大的吸力瞬間將仙女吸入寶典中。
一陣眩暈過後,仙女發現自己來到了乙個浮島上,四周的半空中也有許多大小不一的浮島,他抬頭一看,空中浮現著這樣一句話:欲要成神,必先成就神體。每座浮島都有一定的淬鍊肉體的功效,但你只能選擇恰好k座來淬鍊你的肉體。最終你的神體有多強,就看你的造化了。
仙女看了看手中的寶典,發現上面浮現著這些浮島的資訊,每座浮島上有兩個數字。仙女研究了一會兒終於明白了,原來,每來到一座浮島,你就會由這座島上的神雷淬鍊肉體,得到a點淬鍊值,但是這種淬鍊方法對身體又有一定的傷害,於是你會受到b點損傷值。而最後你的神體強度恰好為你得到的淬鍊值之和與你受到的損傷值之和的比值。即神體強度=(∑a)/(∑b)。同時,你不能選擇一座浮島兩次。你不必擔心仙女如何到達其它的島,寶典擁有將他傳送至任何一座島的能力。
現在,仙女想知道,他有可能淬鍊出的神體的最大強度是多少。他把這個問題交給了未來的你作為剛剛幫助過他的答謝。
第一行包含兩個整數n,k,分別表示浮島的數量(不包括仙女所在的浮島)和仙女可以選擇的浮島數,浮島的編號為1~n
第二行包含n個整數,第i個數為編號為i的浮島的淬鍊值a
第二行包含n個整數,第i個數為編號為i的浮島的損傷值b
乙個實數,為仙女有可能淬鍊出的神體的最大強度,保留三位小數。
3 2
5 7 1
4 3 2
1.714
對於30%的資料,2≤k≤n≤10,1≤a,b≤5
對於100%的資料,2≤k≤n≤100000,1≤a,b≤1000
通過移項可得:
(∑a)/(∑b)=ans ==> ∑a=ans*∑b ==> ∑a-∑b*ans=0
考慮如果ans要更大的話,那麼就是 (∑a)/(∑b)>=ans 得到 ∑a-∑b*ans>=0
所以可以考慮二分答案,然後看是否可以更新。設c[i]=a[i]-b[i]*mid,然後取前k大的,加起來即為∑ai-∑bi*mid,判斷是否大於0和更新即可。
#include#include#include#define ld long double
#define n 100010
using namespace std;
ld ans,l,r,mid,f[n];
int n,k,x,a[n],b[n];
int read()
while(ch>='0'&&ch<='9')
return w*x;
}bool cmp(ld x,ld y)
int check(ld x)
int main()
else r=mid-0.0001;
} printf("%.03lf",ans);
return 0;
}
4229 五校聯考4day1 學習神技
王仙女開啟了 葵花寶典 第一頁上赫然寫道 欲練此功,必先學習上古神技 等比數列求和!王仙女心想 等比數列是什麼 東西?難道我的修仙之路要止步於此了嗎?還好,天無絕人之路,在寶典的第二頁上,寫著密密麻麻的等比數列的介紹 等比數列為這樣乙個數列,它的首項為a 1,第i項為a 1 q i 1 其中q為此等...
五校聯考7day1 遊戲
description wyf從小就愛亂頂,但是頂是會造成位移的。他之前水平有限,每次只能頂出k的位移,也就是從乙個整點頂到另乙個整點上。我們現在將之簡化到數軸上,即從 乙個整點可以頂到與自己相隔在k之內的數軸上的整點上。現在wyf的頭變多了,於是他能頂到更遠的地方,他能頂到任意整點上。現在他在玩乙...
五校聯考7day1 遊戲
description wyf從小就愛亂頂,但是頂是會造成位移的。他之前水平有限,每次只能頂出k的位移,也就是從乙個整點頂到另乙個整點上。我們現在將之簡化到數軸上,即從 乙個整點可以頂到與自己相隔在k之內的數軸上的整點上。現在wyf的頭變多了,於是他能頂到更遠的地方,他能頂到任意整點上。現在他在玩乙...