題目連結: https://zerojudge.tw/ShowProblem?problemid=d900

# 解題思路

運用 priority_queue 將數據不斷的排序好,使最小的數值排在第一個,代表下一個完成接水的水龍頭所用的使用的總時間時間,
每次都取最小的數值做相加之後再推入,在過程中找最大值即可~~

# 程式碼

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n,m,ans=0; cin>>n>>m;
    priority_queue<int,vector<int>,greater<int> > pq;
    for(int i=0;i<m;i++) pq.push(0);
    for(int i=0,wi;i<n&&cin>>wi;i++)
    {
        wi+=pq.top();pq.pop();
        ans=max(wi,ans);
        pq.push(wi);
    }
    cout<<ans<<"\n";
    return 0;
}
更新於 閱讀次數

用實際行動犒賞爆肝的我😀

Zrn Ye LinePay

LinePay