有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顆糖
這次先採用線性的解法。至於**中為什麼可以想到定義乙個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...