e508 - 11917 - Do Your Own Homework!
題目描述
題目描述了Soha需要完成作業,但時間有限。Sparrow可以幫助Soha完成作業,但Sparrow只接受特定的科目,並且每個科目需要一定的時間。題目要求判斷Sparrow是否能在Soha的時間限制內完成作業,或者在允許的遲交期限內完成。
解題思路
這題的解題思路是遍歷Sparrow可以接受的科目列表,找到Soha需要完成的科目。如果找到該科目,則判斷完成該科目所需的天數是否小於等於Soha的時間限制D。如果小於等於D,則輸出"Yesss"。如果大於D但小於等於D+5,則輸出"Late"。如果大於D+5,或者找不到該科目,則輸出"Do your own homework!"。
複雜度分析
- 時間複雜度: O(N),其中 N 是 Sparrow 可以接受的科目數量。因為程式碼需要遍歷科目列表來查找特定的科目。
- 空間複雜度: O(N),因為程式碼使用了一個大小為 N 的陣列
a來儲存科目名稱,以及一個大小為 N 的陣列b來儲存完成每個科目所需的天數。
程式碼
#include <iostream>
using namespace std;
int main(){
cin.tie(0); ios::sync_with_stdio(false);
int t,n;
cin >> t;
for(int c=1;c<=t;++c){
cin >> n;
string a[n],x;
int b[n]={0},d;
for(int i=0;i<n;++i)
cin >> a[i] >> b[i];
cin >> d >> x;
bool ans=0;
cout << "Case " << c << ":";
for(int i=0;i<n;++i){
if(a[i]==x){
if(b[i]<=d){
ans=1;
cout << " Yesss\n";
}
else if(b[i]<=d+5){
ans=1;
cout << " Late\n";
}
break;
}
}
if(!ans)
cout << " Do your own homework!\n";
}
}