題目1435 迷瘴

2021-07-11 02:14:51 字數 1795 閱讀 2397

題目描述:

通過懸崖的yifenfei,又面臨著幽谷的考驗——

幽谷周圍瘴氣瀰漫,靜的可怕,隱約可見地上堆滿了骷髏。由於此處長年不見天日,導致空氣中布滿了毒素,一旦吸入體內,便會全身潰爛而死。

幸好yifenfei早有防備,提前備好了解藥材料(各種濃度的萬能藥水)。現在只需按照配置成不同比例的濃度。

現已知yifenfei隨身攜帶有n種濃度的萬能藥水,體積v都相同,濃度則分別為pi%。並且知道,針對當時幽谷的瘴氣情況,只需選擇部分或者全部的萬能藥水,然後配置出濃度不大於 w%的藥水即可解毒。

現在的問題是:如何配置此藥,能得到最大體積的當前可用的解藥呢?

特別說明:由於幽谷內裝置的限制,只允許把一種已有的藥全部混入另一種之中(即:不能出現對一種藥只取它的一部分這樣的操作)。

輸入:

輸入資料的第一行是乙個整數c,表示測試資料的組數;

每組測試資料報含2行,首先一行給出三個正整數n,v,w(1<=n,v,w<=100);

接著一行是n個整數,表示n種藥水的濃度pi%(1<=pi<=100)。

輸出:

對於每組測試資料,請輸出乙個整數和乙個浮點數;

其中整數表示解藥的最大體積,浮點數表示解藥的濃度(四捨五入保留2位小數);

如果不能配出滿足要求的的解藥,則請輸出0 0.00。

樣例輸入:

3 1 100 10

100

2 100 24

20 30

3 100 24

20 20 30

樣例輸出:

0 0.00

100 0.20

300 0.23

思路:

貪心法,濃度從小往大裝。注意濃度,體積之間的關係。

#include

#include

#include

#include

#include

using

namespace

std;

#define eps 1e-8

int main()

for (int j = 0; j < concnum; j++)

sort(aconc, aconc + concnum);

double currentconc = 0;

int currentvolume = 0;

for (int j = 0; j < concnum; j++)

else

if (tmp - (double)maxconc*(j + 1) < eps)

else

}if (currentconc != 0)

printf("%d %.2lf\n", currentvolume*volume, currentconc);}}

return

0;}

注意點:

浮點數的比較

含義表示

a == b

fabs(a – b) < eps

a != b

fabs(a – b) > eps

a < b

a – b < -eps

a <= b

a – b < eps

a > b

a – b > eps

a >= b

a – b > -eps

題目1435 迷瘴

題目描述 通過懸崖的yifenfei,又面臨著幽谷的考驗 幽谷周圍瘴氣瀰漫,靜的可怕,隱約可見地上堆滿了骷髏。由於此處長年不見天日,導致空氣中布滿了毒素,一旦吸入體內,便會全身潰爛而死。幸好yifenfei早有防備,提前備好了解藥材料 各種濃度的萬能藥水 現在只需按照配置成不同比例的濃度。現已知yi...

23 題目1435 迷瘴

題目描述 通過懸崖的yifenfei,又面臨著幽谷的考驗 幽谷周圍瘴氣瀰漫,靜的可怕,隱約可見地上堆滿了骷髏。由於此處長年不見天日,導致空氣中布滿了毒素,一旦吸入體內,便會全身潰爛而死。幸好yifenfei早有防備,提前備好了解藥材料 各種濃度的萬能藥水 現在只需按照配置成不同比例的濃度。現已知yi...

題目1435 迷瘴 題目23

犯了個低階錯誤 for j 0 j這裡j寫成了i導致後面sort出來的a j 值都是亂碼,還一直懷疑是sort的問題。以後陣列亂碼的問題首先檢視數值在賦值初始化的時候是否有錯誤!題目描述 通過懸崖的yifenfei,又面臨著幽谷的考驗 幽谷周圍瘴氣瀰漫,靜的可怕,隱約可見地上堆滿了骷髏。由於此處長年...