h540 - 神奇早餐店(Magic Shop)
題目描述
題目描述了麥夫去一間奇怪的早餐店買飲料,他想買米漿,但店裡常常沒有。他想知道最晚成為第幾個客人才能保證他能買到最後一杯米漿。如果無論如何都買不到米漿,則輸出特定字串。
解題思路
題目要求計算麥夫最晚成為第幾個客人才能保證買到最後一杯米漿。考慮最壞情況,即前面的客人盡可能地購買米漿和可可,使得麥夫必須是最後一個才能買到米漿。
- 如果米漿數量為0,則無法購買米漿,輸出"?(ˊ?ˋ*)?"。
- 如果可可數量大於米漿數量,則前面的客人可以交替購買可可和米漿,直到米漿賣完,此時麥夫是第 x+y 個客人。
- 如果可可數量小於或等於米漿數量,則前面的客人可以交替購買可可和米漿,直到可可賣完,然後剩下的客人只能購買米漿,此時麥夫是第 2*y-1 個客人。
複雜度分析
- 時間複雜度: O(1)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
long long t,x,y;
int main(){
cin.tie(0); ios::sync_with_stdio(0);
cin >> t;
while(t--){
cin >> x >> y;
if(y==0){
cout << "?(ˊ?ˋ*)?\n";//請去自己複製
}
else if(y>x){
cout << x+y << '\n';
}
else{
cout << y*2-1 << '\n';
}
}
}