演算法提高 排隊打水問題

2021-10-18 07:43:23 字數 1029 閱讀 3927

問題描述

有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1、t2…………tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?

輸入格式

第一行n,r (n<=500,r<=75)

第二行為n個人打水所用的時間ti (ti<=100);

輸出格式

最少的花費時間

樣例輸入

3 21 2 3

樣例輸出

7思路:

此題中可知,我們需要已最少的時間來完成最多人的接水情況,我們知道當前面的人接水時間越短後面等待的時間就越少。由此可知我們可以先把接水時間從小到大排序,我們也需要把r個水龍頭的總時間接近一樣,這樣我們才可以使r個水龍頭到達最小值。本題因為求的是每個人的時間的總時間,所有我們加當前人的接水時間和之前他的等待時間的和才是自己的總時間。因此可得time+=r1[0]+a[i],r1[0]表示當前去這個水龍頭接水時前面的等待時間+現在我接水的時間就是我個人總時間,r1儲存的是當前水龍頭所用的接水總和。

程式:

n,r=

map(

int,

input()

.split())

a=list

(map

(int

,input()

.split())

)r1=[0

for i in

range

(r)]

#儲存的是當前水龍頭所用的接水總和

time=

0a.sort(

)for i in

range

(n):

#當前的i人接水

r1.sort(

)#使r個水龍頭總時間平衡

time+=r1[0]

+a[i]

#總時間

r1[0]

+=a[i]

#儲存總和接水時間

print

(time)

演算法提高 排隊打水問題

問題描述 有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 樣例...