f069 - Error
題目描述
題目描述 Euan 的飲食習慣,給定一些食物的熱量以及 Euan 吃的數量,計算 Euan 攝取的總熱量是否超過了每日的熱量限制。如果 Euan 攝取的熱量小於或等於限制,輸出 "Euan you are doing a great job!",否則輸出 "Euan eats too much."。
解題思路
這題的核心是計算 Euan 攝取的總熱量。題目給定了食物名稱和對應的熱量,以及 Euan 吃的食物名稱和數量。可以使用一個 map 資料結構來儲存食物名稱和熱量之間的對應關係。然後,遍歷 Euan 吃的食物,計算總熱量。最後,將總熱量與每日熱量限制進行比較,輸出相應的結果。
複雜度分析
- 時間複雜度: O(N + M),其中 N 是食物種類的數量,M 是 Euan 吃的食物種類的數量。map 的查找和插入操作平均時間複雜度為 O(1)。
- 空間複雜度: O(N),其中 N 是食物種類的數量。map 儲存了食物名稱和熱量之間的對應關係。
程式碼
#include <iostream>
#include <map>
using namespace std;
int main(){
cin.tie(0); ios::sync_with_stdio(false);
long long int n,w;
while(cin >> n >> w){
w*=40;
map <string ,long long int> food;
string t;
long long int tmp;
while(n--){
cin >> t >> tmp;
food[t]=tmp;
}
cin >> n;
while(n--){
cin >> t >> tmp;
w-=food[t]*tmp;
}
(w>=0)?cout << "Euan you are doing a great job!\n":cout << "Euan eats too much.\n";
}
}