聖誕老人的禮物

2021-08-29 12:34:29 字數 802 閱讀 5363

問題描述

聖誕節來臨了,在城市a中聖誕老人準備分發糖果,現在有多箱不同的糖果,每箱糖果有自己的價值和重量,每箱糖果都可以拆分成任意散裝組合帶走。聖誕老人的馴鹿最多只能承受一定重量的糖果,請問聖誕老人最多能帶走多大價值的糖果。

輸入 第一行由兩個部分組成,分別為糖果箱數正整數n(1 <= n <= 100),馴鹿能承受的最大重量正整數w(0 < w < 10000),兩個數用空格隔開。其餘n行每行對應一箱糖果,由兩部分組成,分別為一箱糖果的價值正整數v和重量正整數w,中間用空格隔開。

輸出 輸出聖誕老人能帶走的糖果的最大總價值,保留1位小數。輸出為一行,以換行符結束。

對於這個問題,我們可以採取貪心演算法,因為他考慮的是眼前的利益,可以用替換法來證明。為此我們要利益最大化,便必須把糖果的價值與重量的比值來判別,比值越大,便能取得最大的利益。我們可以採取結構體來儲存,通過algorithm包中的sort函式來進行排序。之後我採取的是將運算子過載。也可以採取另一種方法寫乙個函式,作為sort的第三個引數。

//關於運算子過載在排序中的使用方法 

#includeusing namespace std;

typedef struct candycandy;

bool operator<(const candy &a,const candy &b)

int main()

sort(c,c+n);

for(int i=0;iw)else

} printf("%.1f",vala);

return 0;

}

貪心 聖誕老人的禮物

聖誕節來臨了,聖誕老人準備分發糖果,現在有多箱不同的糖果,每箱糖果有自己的價值和重量,每箱糖果都可以拆分成任意散裝組合帶走。聖誕老人的馴鹿雪橇最多只能裝下重量w的糖果。請問聖誕老人最多能帶走多大價值的糖果。第一行由兩個部分組成,分別為糖果箱數正整 n 1 n 100 馴鹿能承受的最大重量正整數 w ...

1292 聖誕老人

這道題是一道動態規劃題 for int j 0 j 上面是該題的式子。例如 測試資料 315 199 155 301 215 170 150 25 當發射第二顆飛彈時i 2,我們另j 0。首先a j a i 即a 0 a 2 成立。於是我們看一下ans j 1 ans i ans 0 1 ans 2...

UOJ UR 4追擊聖誕老人

傳送門考慮直接維護乙個堆,然後往裡面丟鏈,並且取出k個堆頂就行了。然後就需要分類討論啥的,給你的三個點變成兩條鏈,每次取出一條鏈之後選擇權值最小的再劈成兩條鏈丟進去。卡空間 所以樹剖,不選擇倍增 複雜度o n k logn include include include define mn 5000...