problem describition: 接水問題
學校裡有乙個水房,水房裡一共裝有m 個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為1。 現在有n 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1到n 編號,i 號同學的接水量為wi。接水開始時,1 到m 號同學各佔乙個水龍頭,並同時開啟水龍頭接水。當其中某名同學j 完成其接水量要求wj 後,下一名排隊等候接水的同學k馬上接替j 同學的位置開始接水。這個換人的過程是瞬間完成的,且沒有任何水的浪費。即j 同學第x 秒結束時完成接水,則k 同學第x+1 秒立刻開始接水。若當前接水人數n』不足m,則只有n』個龍頭供水,其它m−n』個龍頭關閉。 現在給出n 名同學的接水量,按照上述接水規則,問所有同學都接完水需要多少秒。
input:
第1 行2 個整數n 和m(1 ≤ n ≤ 10000,1 ≤m≤ 100, m≤ n),用乙個空格隔開,分別表示接水人數和龍頭個數
output:
只有一行,1 個整數,表示接水所需的總時間
是一道水題,但是思路挺好的哈,所以我就拿來了,反正多多益善。
#include#includeusing namespace std;
int main(),ss[101]=;
cin>>n>>m;
for(i=1;i<=n;i++) cin>>w[i];
//這裡是核心**,ss陣列代表的是水龍頭;
//就相當於每次選擇當前時間最小的水龍頭,然後按照人的順序這樣加上去;
for(i=1;i<=n;i++){
min=99999999;
for(j=1;j<=m;j++){
if(ss[j]
*注意核心**!
noip模擬賽 水題
題目描述 lyk出了道水題。這個水題是這樣的 有兩副牌,每副牌都有n張。對於第一副牌的每張牌長和寬分別是xi和yi。對於第二副牌的每張牌長和寬分別是aj和bj。第一副牌的第i張牌能覆蓋第二副牌的第j張牌當且僅當xi aj並且yi bj。注意牌不能翻轉 當然一張牌只能去覆蓋最多一張牌,而不能覆蓋好多張...
NOIP模擬 水管(水題)
為什麼打了endl竟然沒t。但為什麼交到 上又t了 氵題嘛,做法有很多種啊。我選擇加n 1條邊,這樣就保證了聯通,直接dfs一遍記錄兒子,邊權就是兒子的值,注意修改反向邊。然後一群人拿著我的程式去比誰跑得快 includeusing namespace std const int maxn 2e5 ...
春季聯賽,dfs水題(思路)
對於n 個數,從中取出 m個數,如何取使得這 m個數的乘積最大呢?第一行乙個數 t表示資料組數。每組輸入資料共2行 第1行有 2個整數n m,1 m n 15,第2 行有n個整數,其中每個數的絕對值小於等於4。對每組資料,輸出 1行,為最大的乘積值。15 51 2 3 4 248 向倫神學習簡潔的 ...