《演算法筆記》4 4小節 演算法初步 貪心

2021-10-03 19:53:56 字數 1424 閱讀 7671

題目描述

小明正在玩遊戲,他控制的角色正面臨著幽谷的考驗——

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

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

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

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

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

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

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

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

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

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

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

樣例輸入 copy

21 35 68

12 79 25

59 63

樣例輸出 copy

35 0.01

0 0.00

*思路分析:首先要注意題目要求,各種毒藥的體積相同,這就省了不少麻煩~~畢竟如果可以取一部分進行除錯解藥,就會關係到乙個臨界點的問題。~~我的想法是先把藥水按照濃度從小到大進行排序,這樣就可以通過判斷i種藥水的平均濃度是否不大於目標濃度來計算所可以配置的解藥最大體積和濃度
#include

#include

#include

using

namespace std;

int str[

110]

;int

main()

;scanf

("%d%d%lf"

,&n,

&v1,

&wresult)

;for

(int i=

0; i)sort

(str,str+n)

;//毒藥濃度從小到大排序

//coutdouble wsum=

0,wm=

0,wmm=0;

int i;

for( i=

0; i)else}if

(i==0)

else}}

return0;

}

個人入坑:由於初始輸出那個目標濃度的時候是按照int型別輸入的,所以一直顯示答案錯誤50%。

《演算法筆記》4 4小節 演算法初步 貪心

命題人 外部匯入 時間限制 1.000 sec 記憶體限制 32 mb 某市計程車計價規則如下 起步4公里10元,即使你的行程沒超過4公里 接下來的4公里,每公里2元 之後每公里2.4元。行程的最後一段即使不到1公里,也當作1公里計費。乙個乘客可以根據行程公里數合理安排坐車方式來使自己的打車費最小。...

《演算法筆記》2 2小節

入了本 演算法筆記 每節後面帶乙個codeup的鏈結 題目 小小的記錄一下.爭取早日看完這本書 雖然前面的比較簡單.但是對 完整 有點強迫症.so.c 沒怎麼學過.所以盡量都用c 寫.編寫乙個c程式,要求在螢幕上輸出一下一行資訊。this is my first c program 無this is...

《演算法筆記》2 3小節

接上.前面這幾部分做的有點趕.變數名起的有點隨意qaq.哪天有空回爐重造一下 求一元二次方程ax2 bx c 0的根,三個係數a,b,c由鍵盤輸入,且a不能為0,但不保證b2 4ac 0。程式中所涉及的變數均為double型別。以空格分隔的一元二次方程的三個係數,雙精度double型別 分行輸出兩個...