演算法提高 排隊打水問題
時間限制:1.0s 記憶體限制:256.0mb
提交此題
問題描述
有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1、t2………..tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?
輸入格式
第一行n,r (n<=500,r<=75)
第二行為n個人打水所用的時間ti (ti<=100);
輸出格式
最少的花費時間
樣例輸入
3 2
1 2 3
樣例輸出
7資料規模和約定
其中80%的資料保證n<=10
首先 等的時間最短是這個題最重要的,那麼就需要 讓接水時間最小的人放在前面,
之後,要讓接水的人等的時間最短
建立兩個陣列 ,乙個代表接水的等待時間 ,乙個代表人
接水的人所在的水龍頭的等待時間加上去
然後後面的人優先選擇等待時間最少的水龍頭去接水。
一共進行n次排序,每次的為r*lg(r)
所以複雜度為n*r*lg(r)
資料最大為500*75*9 很小- -
#include
#include
#include
#include
#include
#include
using
namespace
std;
int d[505];//等待的時間
int x[505];//接水的人
int main()
sort(x,x+n);
for(int i=0;i//把等待時間最小的水龍頭排到前面
//for(int j=0;jsum+=d[0]+x[i];
d[0]+=x[i];
// for(int j=0;j}
cout
<}
}
演算法提高 排隊打水問題
問題描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?輸入格式 第一行n,r n 500,r 75 第二行為n個人打水所用的時間ti ti 100 輸出格式 最少的花費時間 樣例輸入 3 21 2 3 樣例...
演算法提高 排隊打水問題
問題描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?輸入格式 第一行n,r n 500,r 75 第二行為n個人打水所用的時間ti ti 100 輸出格式 最少的花費時間 樣例輸入 3 21 2 3 樣例...
演算法提高 排隊打水問題 思路)
問題描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?輸入格式 第一行n,r n 500,r 75 第二行為n個人打水所用的時間ti ti 100 輸出格式 最少的花費時間 樣例輸入 3 21 2 3 題意...