學校裡有乙個水房,水房裡一共裝有 m
mm 個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為 111。
現在有 n
nn 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從 1
11 到 n
nn 編號,i
ii 號同學的接水量為 w
iw_i
wi 。接水開始時, 1
11 到 m
mm 號同學各佔乙個水龍頭,並同時開啟水龍頭接水。當其中某名同學 j
jj 完成其接水量要求 w
jw_j
wj 後,下一名排隊等候接水的同學 k
kk 馬上接替 j
jj 同學的位置開始接水。這個換人的過程是瞬間完成的,且沒有任何水的浪費。即 j
jj 同學第 x
xx 秒結束時完成接水,則 k
kk 同學第 x+1
x+1x+
1 秒立刻開始接水。若當前接水人數 n』n』
n』不足 m
mm,則只有 n』n』
n』個龍頭供水,其它 m−n
』m−n』
m−n』
個龍頭關閉。
現在給出 n
nn 名同學的接水量,按照上述接水規則,問所有同學都接完水需要多少秒。
第 1
11 行 2
22 個整數 n
nn 和 m
mm,用乙個空格隔開,分別表示接水人數和龍頭個數。
第 2
22 行 n
nn 個整數 w1,
w2,…
,wnw_1, w_2, …, w_n
w1,w2
,…,
wn ,每兩個整數之間用乙個空格隔開,w
iw_i
wi 表示 i
ii 號同學的接水量。
1
11 個整數,表示接水所需的總時間。
534
4121
4
8423
7187
3270
9380
76
163
1≤m
≤102
1 \le m \le 10^2
1≤m≤1021≤
n≤10
41 \le n \le 10^4
1≤n≤1041≤
wi≤100
1 \le w_i \le 100
1≤wi≤
100m≤n
m \le n
m≤n用迴圈+陣列模擬接水, 1
11 次迴圈算 1
11 秒。
陣列下標就是每個水龍頭的標號 (1
11~m
mm)。
那麼陣列的值就是對應的學生對應的接水量。
剛開始時 1
11~m
mm 個水龍頭預設的對應 1
11~m
mm 編號學生的接水量。
一旦有乙個學生接完了 那麼就讓下乙個等待接水的學生來這個水龍頭接水。
也就是讓下個學生對應的接水值賦值這個這個水龍頭對應的陣列
c ++
c++c+
+ **如下
//這裡t是下個等待接水的學生的編號
//s陣列是接水值
//m如題意
//ans為答案
for(
int i =
1; i <= m; i++
)ans++
;
以上是核心**。
接下來處理億一下細節
c ++
c++c+
+整體**如下。
#include
//萬能頭
using
namespace std;
int s[
11000
], t, ans;
int m, n;
intmain
(int argc,
char
**ar**)
ans++;}
cout << ans;
return0;
}
最後。。。
不說了,放!
我放棄了
繼續縮時間!
我們看到題目裡說的 1≤m
≤102
;1≤n
≤104
;m≤n
1 \le m \le 10^2;1 \le n \le 10^4;m \le n
1≤m≤10
2;1≤
n≤10
4;m≤
n,發現資料範圍有點大。
先用scanf()和printf()試試。
#include
//萬能頭
using
namespace std;
int s[
11000
], t, ans;
int m, n;
intmain
(int argc,
char
**ar**)
ans++;}
printf
("%d"
, ans)
;return0;
}
然後發現並沒有什麼用,還是tle。
分析**,發現第7行的for (int i = 1; i <= m; i++)這裡的m
應該是n
!改億一改試試。
#include
//萬能頭
using
namespace std;
int s[
11000
], ans, n, m, t;
intmain
(int argc,
char
**ar**)
} ans++;}
cout << ans;
return0;
}
然後就,就,就,ac了!
2023年 noi
pnoip
noip
普及組第 2
22 題 ↩︎
接水果 題解
雖然是noi noi ctsc,但感覺還沒有平時考試難,可能是這種題太套路了.給了你一棵樹,給了你一些路徑,每次詢問,u,v兩點間的第k小的子路徑 必須是給出的那些路徑中的 怎麼判某條路徑是某條路徑的子路徑?乙個套路就是用dfs序的區間包含關係.這個套路大概自己推理一下就出來了.然後發現限制條件是乙...
排隊接水 題解
題目描述 有 n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 ti,請程式設計找出這 n個人排隊的一種順序,使得 n 個人的平均等待時間最小。輸入格式 第一行為乙個整數 n。第二行 n個整數,第 i 個整數 ti,表示第 i 個人的等待時間 ti。輸出格式 輸出檔案有兩行,第一行為一種平均時間...
接水問題 二
n個人一起排隊接水,第i個人的重要性是a i 需要b i 的時間來接水。1 n 100000 0 b i 1000 0 a i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間乘以自己的...