PTA 佇列模擬題目型別總結及解題思路 C

2022-06-14 14:36:12 字數 1515 閱讀 5282

如1014, 1017, 1026, 以下給出1017題目

如1006, 1016, 1095,以下給出1016題目

如何處理輸入的資料?

int month, day, hour, min;

scanf("%d:%d:%d:%d", &month, &day, &hour, &min);

一般講所有的時間轉化為讀入的最小時間單元,用乙個變數儲存。在這個例子中,將月、日、小時都轉化為分鐘的形式。

int time = month*31*24*60+day*24*60+hour*60+min;
建立資料結構儲存資料

對於型別一的題目需要建立customer以及window兩個結構體

對於型別二的題目一般需要建立info結構體以及乙個map用來儲存顧客id與info的關係

如何模擬排隊/佇列?

對於型別一的題目

根據顧客到達的時間先後對所有顧客進行排序

bool cmp(struct customer a, struct customer b)

else

對於型別二的題目

根據題意篩選有效資訊,去掉只有開啟服務沒有結束服務或只有結束服務沒有開啟服務的資訊。

這裡需要針對每乙個顧客的資訊按照時間進行排序,選擇對應的開啟和結束服務時間

for(map>::iterator it = customers.begin();it!=customers.end();it++);求每個顧客離開的時間

1026(30)

給出視窗數和顧客到達及服務時間

21:00:00時不再接受顧客

規定了vip視窗和vip客戶,

vip客戶可以優先使用vip視窗

vip客戶優先使用空閒vip視窗即使有普通視窗空閒

求顧客開始接受服務和等待服務的時間

題號(按難度排序)

題目難點(各題的不同)

注意事項

1006(25)

求最先開啟服務的顧客

以及最晚結束服務的顧客

無1016(25)

不同時間段提供服務的收費**不同

可能有跨天**

求每個顧客每一次服務的花費以及總花費

1095(30)

求總服務時間最長的顧客

求在指定時間開啟該項服務的顧客數

PTA題目總結

字串解碼編碼 排序pta中對鍊錶的考察不像leetcode,大部分時候的考察是通過靜態鍊錶的方式 大多數是25分的題,用時大多在25 30分鐘,準確率不錯 靜態鍊錶一般會給 address key next 作為乙個node,一般情況下數量級會小於10 5 因此可以通過乙個大陣列存放給的節點,然後通...

PTA 期末複習 題目總結

6 1 找兩個數中最大者 14 分 本題要求對兩個整數a和b,輸出其中較大的數。函式介面定義 int max int a,int b 其中a和b是使用者傳入的引數,函式返回的是兩者中較大的數。裁判測試程式樣例 include int max int a,int b int main 你的 將被嵌在這...

銀行業務佇列簡單模擬 PTA

include include define maxsize 1000 define overflow 2 define ok 1 define error 1 銀行業務佇列簡單模擬 using namespace std typedef struct queue sqqueue int initq...