思維題 排隊接水(洛谷 P1223)

2021-09-27 09:20:33 字數 635 閱讀 1544

題目描述

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

純思維題,這道題最重要的就是,每個人的等待時間為不是ti,而是每個人前面的人等待時間之和,換個思維就是每個人的等待時間*這個人之後的人數。接水順序就是接水時間從小到大排個序就行。

**:

#include

using

namespace std;

struct nodean[

1010];

bool

cmp(node p,node q)

intmain()

sort

(an+

1,an+n+

1,cmp)

;long

long sum=0;

for(

int i=

1;i<=n;i++

)printf

("\n");

printf

("%.2f\n",(

double

)sum/

(double

)n);

return0;

}

洛谷 P1223 排隊接水

這一題是貪心來求解問題,讓小的在前面,大的在後面,就是貪心下的最優解 這裡使用一下priority queue優先佇列在做,這個是stl容器 下面是 include include include include include using namespace std typedef pair in...

洛谷P1223 排隊接水

這裡主要想記一下強制型別轉換可能也需要浪費時間?一開始我是把sum定義為 int型別,下面的double s2 double sum n 有兩組資料死活跑不過,也不知道為啥,希望路過的大佬能給小弟看看。方法1 定義兩個陣列,乙個存資料,乙個存編號。include using namespace st...

洛谷 P1223 排隊接水

有 n 個人在乙個水龍頭前排隊接水,假如每個人接水的時間為 t i 請程式設計找出這 n 個人排隊的一種順序,使得 n 個人的平均等待時間最小。第一行為乙個整數 n。第二行 n 個整數,第 i 個整數 t i 表示第 i 個人的等待時間 t i 輸出檔案有兩行,第一行為一種平均時間最短的排隊順序 第...