貪心1 排隊打水問題

2021-09-07 12:48:46 字數 907 閱讀 4781

一、心得

二、題目及分析

題目意思:有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。

分析:看題目意思,要使每個人平均等待時間最小,當然是接水時間小的排在前面了,因此解法如下。

1、讀入n個人接水時間。

2、對等待時間a陣列進行排序,序號陣列b同時進行排序。這裡資料n為20000,因此,必須用快排才行,同時要注意的是,排序的時候要注意等待時間是一樣的時候,序號前的要排在前面,所以要用到雙關健排序。

3、對每個接水時間t進行累加s即s:=s+a[i],就是下乙個人的等待時間了。對每個等時間s進行累加zs,zs就總等待時間了。

三、**及結果

**中的n為100

1 #include 2 #include 3 #include 4

using

namespace

std;

5int

main()

12 sort(a+1,a+n+1

);13

14//

水龍頭15

2030 排隊打水問題

time limit 3 second memory limit 2 mb 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。輸入檔案兩行 第一行輸入打水人數n,水龍頭數r。用空格隔開 第二行依次輸入n個人的打水時...

2030 排隊打水問題

time limit 3 second memory limit 2 mb 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。輸入檔案兩行 第一行輸入打水人數n,水龍頭數r。用空格隔開 第二行依次輸入n個人的打水時...

(貪心1)排隊接水

問題描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?輸入格式 第一行n,r n 500,r 75 第二行為n個人打水所用的時間ti ti 100 輸出格式 最少的花費時間 樣例輸入 3 2 1 2 3 樣...