題目描述
小l目前正在他的實驗室裡研究高能粒子。他發現了一種神奇的粒子,小l稱其為l粒子。l粒子擁有著n
nn個價位,第i
ii個價位對應儲存著大小為a
ia_i
ai的勢能,並且a
ia_i
ai互不相同。現在小l想要做乙個實驗來研究l粒子的性質,他首先會選出l粒子的三種價位x,y
,z(a
x)x,y,z(axx,
y,z(
ax),一開始l粒子處於價位x
xx,然後小l會給l粒子充能,使其價位公升高至z
zz,然後控制l粒子釋放能量,使其價位跌落至y
yy,最後l粒子會自發地流失能量,使其價位回到x
xx。為了盡可能地利用能量,小l希望這個實驗的能量利用效率 最大。但由於實驗裝置過於老舊,小l並不能給l粒子充超過m
mm能量(也就是說az−
axaz-ax
az−a
x不能大於m
mm),否則實驗儀器會損壞。小l想知道他做實驗的能量利用效率最大是多少,但他還有別的事情要忙,於是他把這個問題交給了你。
輸入
第一行乙個整數t
tt,表示資料組數。
接下來每組資料第一行兩個整數n,m
n,mn,
m,意義如題麵中所述。
第二行n
nn個整數,第i個表示l粒子價位i
ii儲存的勢能a
ia_i
ai.
輸出
對於每組資料輸出一行乙個實數,表示最大的效率,如果小l不能完成實驗,輸出-1.
你與標準答案的絕對誤差不能超過10^(-9)。
樣例輸入
15 5
1 2 5 8 9
樣例輸出
0.75
資料範圍限制
思路這。。。這應該是道數學題吧 (數學題太難了 效率=
(z−y
)/(z
−x)效率=(z-y)/(z-x)
效率=(z−
y)/(
z−x)
,因為(z−
y)(z-y)
(z−y
)是可以運用的能量,(z−
x)(z-x)
(z−x
)是總能量。(後面的解釋請dalao們自動忽略)
那為了方便求解,我們就把ta變形一下:求最小的(y−
x)/(
z−x)
(y-x)/(z-x)
(y−x)/
(z−x
)。嗯~ o( ̄▽ ̄)o,這個好求多了。要保證x−y
x-yx−
y最小,z−x
z-xz−
x最大。先排個序 (不要問我為什麼,因為要用二分,i
ii列舉x
xx,那麼y=a
[i+1
]y=a[i+1]
y=a[i+
1]。z
zz是最大的乙個減x
<=m
x<=m
x<=m
的a
ia_i
ai。怎麼求z
zz呢?當然是二分啦 (廢話)
#include
#include
#include
using namespace std;
int t,n,m,a[
100100];
double gun;
int main()
//二分
gun=
max(gun,
(a[r]
-a[j])*
1.0/
(a[r]
-a[i]))
;//(z-y)/(z-x)最大}if
(gun!=0)
printf
("%0.12f\n"
,gun)
;else
printf
("-1\n");
//劃重點
}}
noip 2017 普及組 T3 棋盤
有乙個m m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。當你從乙個格仔走向另乙個格仔時,如果兩個格仔的顏色相同,那你不需要花費金幣 如果不同,則你需...
NOIP2008 普及組 T3 傳球遊戲
上體育課的時候,小蠻的老師經常帶著同學們一起做遊戲。這次,老師帶著同學們一起做傳球遊戲。遊戲規則是這樣的 n個同學站成乙個圓圈,其中的乙個同學手裡拿著乙個球,當老師吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的乙個 左右任意 當老師在此吹哨子時,傳球停止,此時,拿著球沒有傳出去的那個同...
NOIP2014普及組複賽T3 螺旋矩陣
乙個n行n列的螺旋矩陣可由如下方法生成 從矩陣的左上角 第1行第1列 出發,初始時向右移動 如果前方是未曾經過的格仔,則繼續前進,否則右轉 重複上述操作直至經過矩陣中所有格仔。根據經過順序,在格仔中依次填入1,2 3,n21,2,3,n 2 1,2,3,n2 便構成了乙個螺旋矩陣。下圖是乙個n 4 ...