貪心演算法(2)

2021-06-21 03:22:36 字數 1278 閱讀 3692

題目描述:通過懸崖的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

1002 100 24

20 30

3 100 24

20 20 30

樣例輸出:

0 0.00

100 0.20

300 0.23

本題的解決方法:
按照溶液濃度降序排列,每次都選取濃度最小的溶液(因為所有溶液的體積是一樣的),如果---選取的溶液濃度和 < w*count(count選取的溶液的個數),則不再繼續選取溶液,輸出結果。
#include #include using namespace std;

int arr[101];

int main()

unsigned int arr[601];

int main()

{ unsigned int l;

int n;

while(scanf("%u%d",&l,&n)!=eof){

for(int i = 0; i

貪心演算法2

在求最優解問題的過程中,依據某種貪心標準,從問題的初始狀態出發,直接去求解每一步的最優解,通過若干次的貪心選擇,最終得出整個問題的最優解,這種求解方法就是談心演算法。從貪心演算法的定義可以看出,貪心法並不是從整體上考慮問題,它所做出的選擇只是在某中意義上的區域性最優解,而由問題自身的特性決定了該題運...

貪心演算法2

太難的題沒有做出來,所以就寫兩道印象較為深刻的題。1.最小新整數 給定乙個十進位制正整數n 0 n 1000000000 每個數字上數字均不為0。n的位數為m。現在從m位中刪除k位 0 include using namespace std char a 1000000000 intmain if ...

貪心演算法2

多處最優服務次序問題。問題描述 設有n個顧客同時等待一項服務,顧客i需要的服務時間為ti,1 i n 共有s處可以提供此項服務。應如何安排n個顧客的服務次序才能使平均等待時間達到最小?輸入 第一行為兩個正整數n和s 第二行為n個正整數,表示n個顧客需要的服務時間 輸出 最小平均等待時間。includ...