迷瘴 HDU 2570 (精度數學)

2021-09-02 16:48:38 字數 1276 閱讀 9690

題目:

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

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

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

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

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

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

input

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

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

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

output

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

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

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

sample input

3

1 100 10

1002 100 24

20 30

3 100 24

20 20 30

sample output

0 0.00

100 0.20

300 0.23

解題報告:大體題意,咱們有n,v,w,而且每種藥水都有自己的濃度,咱們可以進行稀釋(兩種藥水進行混合),問最後可不可以將當前手裡的藥水稀釋到小於w的藥水(盡可能的多)。如果不能的話,就輸出0 0.00,可以的話,就將最大體積和濃度輸出。

ac**:

#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn =1e5+1000;

int c,n,v,w;

int num[maxn];

int main()

if(allv==0)

printf("0 0.00\n");

else} }

HDU 2570 迷瘴 貪心

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

HDU 2570 迷瘴 貪心

傳送門 hdu 2570 迷瘴 分析 注意 如果百分號小數化去判斷 就有精度問題 p 0.000001 w 貪心策略 先把濃度按從小到大的順序排列,再乙個乙個的 貪 直至貪到所配濃度大於題目中所給的濃度。如下 include include using namespace std int main ...

HDU 2570 迷瘴 貪心

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