有n只小熊,他們有著各不相同的戰鬥力。每次他們吃糖時,會按照戰鬥力來排,戰鬥力高的小熊擁有優先選擇權。前面的小熊吃飽了,後面的小熊才能吃。每只小熊有乙個飢餓值,每次進食的時候,小熊們會選擇最大的能填飽自己當前飢餓值的那顆糖來吃,可能吃完沒飽會重複上述過程,但不會選擇吃撐。
現在給出n只小熊的戰鬥力和飢餓值,並且給出m顆糖能填飽的飢餓值。
求所有小熊進食完之後,每只小熊剩餘的飢餓值。
第一行兩個正整數n和m,分別表示小熊數量和糖的數量。(n <= 10, m <= 100)第二行m個正整數,每個表示著顆糖能填充的飢餓值。
接下來的n行,每行2個正整數,分別代表每只小熊的戰鬥力和當前飢餓值。
題目中所有輸入的數值小於等於100。
輸出n行,每行乙個整數,代表每只小熊剩餘的飢餓值。示例1
2 55 6 10 20 30
4 34
3 35
40
第一只小熊吃了第5顆糖這是一道簡單的貪心題目,每次戰鬥力最大的熊吃能量最高的食物即可,用乙個陣列記錄食物是否被吃。要特別注意,最後輸出的時候需要原來的順序,所以要將原來的順序記錄下來第二隻小熊吃了第4顆糖
第二隻小熊吃了第3顆糖
第二隻小熊吃了第1顆糖
這裡多次使用到自定義排序演算法,推薦c++11中的lamda表示式。
#include #include using namespace std;
const int n = 200;
typedef pairpii;
int main()
; // 標記糖果是否被吃
pii bear[n];
cin >> n >> m;
for (int i = 0; i < m; i++)
for (int i = 0; i < n; i++)
cin >> bear[i].first >> bear[i].second;
sort(candy, candy + m, greater());
sort(bear, bear + n, (const pii& a, const pii& b) );
for (int i = 0; i < n; i++)
} }for (int i = 0; i < n; i++)
}
2018 拼多多校招貪心演算法題
六一兒童節,老師帶了很多好吃的巧克力到幼兒園。每塊巧克力j的重量為w j 對於每個小朋友i,當他分到的巧克力大小達到h i 即w j h i 他才會上去表演節目。老師的目標是將巧克力分發給孩子們,使得最多的小孩上台表演。可以保證每個w i 0且不能將多塊巧克力分給乙個孩子或將一塊分給多個孩子。第一行...
拼多多2018校招 小熊吃糖
有n只小熊,他們有著各不相同的戰鬥力。每次他們吃糖時,會按照戰鬥力來排,戰鬥力高的小熊擁有優先選擇權。前面的小熊吃飽了,後面的小熊才能吃。每只小熊有乙個飢餓值,每次進食的時候,小熊們會選擇最大的能填飽自己當前飢餓值的那顆糖來吃,可能吃完沒飽會重複上述過程,但不會選擇吃撐。現在給出n只小熊的戰鬥力和飢...
拼多多2018校招 最大乘積
給定乙個無序陣列,包含正數 負數和0,要求從中找出3個數的乘積,使得乘積最大,要求時間複雜度 o n 空間複雜度 o 1 輸入描述 第一行是陣列大小n,第二行是無序整數陣列a n 輸出描述 滿足條件的最大乘積輸入例子1 4 3 4 1 2輸出例子1 24思路 找出最小 次小,最大,次大,第三大的五個...