小熊吃糖 2018筆試題

2021-09-24 03:01:42 字數 1396 閱讀 9385

有n只小熊,他們有著各不相同的戰鬥力。每次他們吃糖時,會按照戰鬥力來排,戰鬥力高的小熊擁有優先選擇權。前面的小熊吃飽了,後面的小熊才能吃。每只小熊有乙個飢餓值,每次進食的時候,小熊們會選擇最大的能填飽自己當前飢餓值的那顆糖來吃,可能吃完沒飽會重複上述過程,但不會選擇吃撐。

現在給出n只小熊的戰鬥力和飢餓值,並且給出m顆糖能填飽的飢餓值。

求所有小熊進食完之後,每只小熊剩餘的飢餓值。

輸入描述:

第一行兩個正整數n和m,分別表示小熊數量和糖的數量。(n <= 10, m <= 100)

第二行m個正整數,每個表示著顆糖能填充的飢餓值。

接下來的n行,每行2個正整數,分別代表每只小熊的戰鬥力和當前飢餓值。

題目中所有輸入的數值小於等於100。

輸出描述:

輸出n行,每行乙個整數,代表每只小熊剩餘的飢餓值。
示例1

2 5

5 6 10 20 30

4 34

3 35

4

0

第一只小熊吃了第5顆糖

第二隻小熊吃了第4顆糖

第二隻小熊吃了第3顆糖

第二隻小熊吃了第1顆糖

這題不難,按照題意可以得到乙個線性的解法,主要是注意細節。另外也可以嘗試用二分的方法,可以進一步減少時間複雜度。

這次先採用線性的解法。至於**中為什麼可以想到定義乙個bear的結構體,主要是考慮到題目中熊有fight,hunger和id三個屬性,並隱含著要按照fight從大到小排序,故想到定義乙個結構體,並自定義從大到小排序cmp函式。

#include #includeusing namespace std;

struct bear

;int n, m; //n<=10,m<=100

int a[105]; //糖的數量

int flag[105] = ;//0表示糖果沒被吃掉

bear b[15]; //熊的數量

//int valperbear;

int res[15] = ;//熊進食後的飢餓值

bool cmp(bear a,bear b)

int hungerval(int i)

} return b[i].hunger;

}int main()

sort(a, a + m);//預設是從小到大

for (int j = 0; j < n; j++)

sort(b, b + n, cmp); //從大到小

for (int i = 0; i < n;i++)

for (int i = 0; i < n;i++)

return 0;

}

2018拼多多校招筆試貪心程式設計題小熊吃糖詳解

有n只小熊,他們有著各不相同的戰鬥力。每次他們吃糖時,會按照戰鬥力來排,戰鬥力高的小熊擁有優先選擇權。前面的小熊吃飽了,後面的小熊才能吃。每只小熊有乙個飢餓值,每次進食的時候,小熊們會選擇最大的能填飽自己當前飢餓值的那顆糖來吃,可能吃完沒飽會重複上述過程,但不會選擇吃撐。現在給出n只小熊的戰鬥力和飢...

拼多多2018校招 小熊吃糖

有n只小熊,他們有著各不相同的戰鬥力。每次他們吃糖時,會按照戰鬥力來排,戰鬥力高的小熊擁有優先選擇權。前面的小熊吃飽了,後面的小熊才能吃。每只小熊有乙個飢餓值,每次進食的時候,小熊們會選擇最大的能填飽自己當前飢餓值的那顆糖來吃,可能吃完沒飽會重複上述過程,但不會選擇吃撐。現在給出n只小熊的戰鬥力和飢...

中移物聯網2018筆試題

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...