日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[蓝桥杯][算法训练VIP]接水问题(思维)

發布時間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [蓝桥杯][算法训练VIP]接水问题(思维) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述
學校里有一個水房,水房里一共裝有m個龍頭可供同學們打開水,每個龍頭每秒鐘的供水量相等,均為1。現在有n名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1到n編號,i號同學的接水量為wi。接水開始時,1到m號同學各占一個水龍頭,并同時打開水龍頭接水。當其中某名同學j完成其接水量要求wj后,下一名排隊等候接水的同學k馬上接替j同學的位置開始接水。這個換人的過程是瞬間完成的,且沒有任何水的浪費。即j同學第x秒結束時完成接水,則k同學第x+1秒立刻開始接水。若當前接水人數n’不足m,則只有n’個龍頭供水,其它m?n’個龍頭關閉。現在給出n名同學的接水量,按照上述接水規則,問所有同學都接完水需要多少秒。

樣例 1 說明
第1秒,3人接水。第1秒結束時,1、2、3號同學每人的已接水量為1,3號同學接完水,4號同學接替3號同學開始接水。
第2秒,3人接水。第2秒結束時,1、2號同學每人的已接水量為2,4號同學的已接水量為1。
第3秒,3人接水。第3秒結束時,1、2號同學每人的已接水量為3,4號同學的已接水量為2。4號同學接完水,5號同學接替4號同學開始接水。
第4秒,3人接水。第4秒結束時,1、2號同學每人的已接水量為4,5號同學的已接水量為1。1、2、5號同學接完水,即所有人完成接水。
總接水時間為4秒。
數據規模和約定
1 ≤ n ≤ 10000,1 ≤m≤ 100 且m≤ n;
1 ≤ wi ≤ 100。

輸入
第1 行2 個整數n 和m,用一個空格隔開,分別表示接水人數和龍頭個數。 第2 行n 個整數w1、w2、……、wn,每兩個整數之間用一個空格隔開,wi 表示i 號同 學的接水量。
輸出
輸出只有一行,1 個整數,表示接水所需的總時間。
樣例輸入
8 4
23 71 87 32 70 93 80 76
樣例輸出
163
思路:這個題目數據量比較小,暴力也可以。但是我用的優先隊列,因為接水順序是固定的,所以前m個人一定是每個水龍頭都安排上。剩下的人,就是前面誰接完水了,他就頂上。最后看哪個水龍頭上時間最長,就是接水花費的總時間。
代碼如下:

#include<bits/stdc++.h> #define ll long long using namespace std;const int maxx=1e4+100; int n,m;int main() {scanf("%d%d",&n,&m);priority_queue<int,vector<int>,greater<int> >p;int x,tt;for(int i=1;i<=n;i++){scanf("%d",&x);if(i<=m) p.push(x);else{tt=p.top();p.pop();p.push(tt+x);}}while(p.size()){tt=p.top();p.pop();}printf("%d\n",tt);return 0; }

努力加油a啊,(o)/~

總結

以上是生活随笔為你收集整理的[蓝桥杯][算法训练VIP]接水问题(思维)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。