PAT甲級1017解法

2022-05-25 07:42:11 字數 811 閱讀 5559

這題也出現了時間,我們根據上一題的經驗同樣把時分秒轉換為自零點零分零秒開始經過的秒數。這題也出現了視窗排隊,之前也有題目可以參考,而且這次每個視窗最多排乙個,更加簡單。另外,之前用過的sort排序這裡也有用處。本來我的想法是先填滿所有視窗,將沒排進視窗的統一放在乙個佇列中儲存,但這個方法比較複雜,而且容易出錯。參考了網上的乙個方法,將17點之後到的在輸入時就排除掉,而之前到的全部放在乙個vector中,之後遍歷vector,同時遍歷查詢每個視窗完成當前接待的最早時間,之後進行更新。

#include #include #include using namespace std;

struct record

;bool compare(record a, record b)

int main()

sort(records.begin(), records.end(), compare);

vectorlinestime(k, eight); //每個視窗完成當前接待的時間,初始化都為8點

for (int i = 0; i < records.size(); i++)

}record r = records[i];

if (linestime[index] <= r.time) //來的時間晚於視窗完成前乙個處理的時間

else //來的時間早於視窗完成前乙個處理的時間

}if (records.size() == 0) //沒有符合的條件,直接輸出0.0,因為0不能作除數

cout << 0.0;

else

return 0;

}

浙大PAT甲級 1017

銀行佇列 卻沒用到佇列 include include include include include include using namespace std int n,k vectorline struct customer bool compare customer c1,customer c...

PAT甲級1020解法

include include include using namespace std struct node vectorpostorder vectorinorder queuelevelorder void level node root,int n node construct int po...

PAT甲級1016解法

這題的關鍵在於使用什麼資料結構去存輸入的資料,以及如何計算每次通話的費用。一開始我考慮了乙個非常複雜的方法,發現寫了一百多行 才開了個頭,覺得不太對勁,於是就上網搜尋了其他人是怎麼做的,看了之後豁然開朗。在讀入各個時段的話費 時,進行累加操作最後得出全天的話費方便後續計算。另外需要定義乙個儲存每條聯...