題目描述
有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1、t2…………tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?
資料規模和約定
其中80%的資料保證n< =10
輸入
第一行n,r (n< =500,r< =75)
第二行為n個人打水所用的時間ti (ti< =100);
輸出
最少的花費時間
樣例輸入
3 21 2 3
樣例輸出
7每個人用的時間=等待時間+打水時間, 打水時間固定,所以要讓所用花費時間最小,就應該讓所有人的等待時間最小。所以需要從小到大排序,把時間小的放在前面。
有r個水龍頭就要模擬這r個水龍頭,先從小到大取出r個人放進去,然後取出打水時間最小的拿出來,再放入等待佇列中打水時間最小的,每次都要對r個水龍頭重新排序
因為已經排好序的陣列在進行sort快排會容易退化到n^2 的複雜度,所以這裡使用優先佇列來做。
#include
#include
#include
#include
#include
using namespace std;
priority_queue<
int, vector<
int>
, greater<
int>
> q;
int a[
505]
;int n, r, ans=0;
intmain()
sort
(a+1
, a+n+1)
;for
(int i=
1; i<=r; i++
)for
(int i=r+
1; i<=n; i++
) 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 樣例...
藍橋杯 演算法提高VIP 排隊打水問題 貪心
題目描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?資料規模和約定 其中80 的資料保證n 10 如下 include define ll long long using namespace std co...