藍橋 排隊打水問題 貪心

2021-10-04 04:01:40 字數 1079 閱讀 3043

題目描述

有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...