Problem ID :d077. 4.排隊

New Thread

User 請問解法

austins96432 SendIMessage
涼麵趁熱吃

d077. 4.排隊 | From: 124.219.6.236 | Post Date:2020-05-28 14:36:01.0

是不是要用 queue

還是有其他方法 

 


文章類型: 一般 | Reply | Back
User Re:請問解法

sagit SendIMessage
sagit

d077. 4.排隊 | From: 112.104.147.145 | Post Date:2020-05-29 14:07:23.0

是不是要用 queue
還是有其他方法 

就是用 queue 


文章類型: 一般 | Reply | Back
User Re:請問解法

austins96432 SendIMessage
涼麵趁熱吃

d077. 4.排隊 | From: 111.248.160.69 | Post Date:2020-05-29 20:04:29.0

想請問作法

#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
    queue<int> que;
    int n, longest = 0;
    cin >> n;
    int q[n], s[n], time = 1;
    bool first = true;
    for (int i = 0; i < n; i++)
        cin >> q[i] >> s[i];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < s[i]; j++, time++)
        {
            for (int k = 0; k < n; k++)
            {
                if (time == q[k])
                {
                    if (first)
                    {
                        first = false;
                        continue;
                    }
                    que.push(q[k]);
                    if (longest < que.size())
                        longest = que.size();
                }
            }
        }
        que.pop();
    }
    cout << longest << "\n";
    return 0;
}

 

 


文章類型: 一般 | Reply | Back
User Re:請問解法

sagit SendIMessage
sagit

d077. 4.排隊 | From: 112.104.147.145 | Post Date:2020-05-29 22:41:34.0

請增加第三個陣列,記錄每位客人離開的時間,
只要用一層 for 迴圈就可以計算出來。

至於 queue 的使用,先把第一位客人放進去,
接下來每放一個客人進去,
就檢查 queue 先頭客人的離開時間是不是超過目前這位客人的到達時間,
是的話就把他移走,重複這動作直到 queue 先頭客人的離開時間 < 最後一位客人的到達時間,
此時排隊人數就是 queue 長度-1。
重複上面的動作,直到最後一位客人放進 queue 此止。

這題雖說是用 queue,
但其實直接用陣列加兩個指標做反而更快又更好寫。 

 


文章類型: 一般 | Reply | Back
User Re:請問解法

sagit SendIMessage
sagit

d077. 4.排隊 | From: 112.104.147.145 | Post Date:2020-05-29 22:43:54.0

另外,這題只出到 N=100,
所以你用兩層 for 迴圈一個一個計算也是會過,
重點就是先計算出每個人離開的時間。 


文章類型: 一般 | Reply | Back
User Re:請問解法

austins96432 SendIMessage
涼麵趁熱吃

d077. 4.排隊 | From: 111.248.160.69 | Post Date:2020-05-30 09:36:14.0

謝謝老師,已AC

但我還想請問

用陣列加兩個指標的做法要怎麼寫

 


文章類型: 一般 | Reply | Back
User Re:請問解法

sagit SendIMessage
sagit

d077. 4.排隊 | From: 175.182.182.151 | Post Date:2020-05-30 11:42:00.0

謝謝老師,已AC
但我還想請問
用陣列加兩個指標的做法要怎麼寫

你如何用陣列實作 queue,
就是怎麼寫。 


文章類型: 一般 | Reply | Back
User Re:請問解法

austins96432 SendIMessage
涼麵趁熱吃

d077. 4.排隊 | From: 111.248.160.69 | Post Date:2020-05-30 20:59:04.0

原來如此 


文章類型: 一般 | Reply | Back

New Thread

ZeroJudge Forum