トピックポータル
分析:タイトルは、すべての最小平均待ち時間を必要とし、他の言葉で、それは可能な限り短く水時間を取得するのを待ち、最短待ち時間を見つけ、その後、できるだけ水次いで水時間は限り短く、その人をしましょう
貪欲戦略:聞かせて人々が水に短時間にアクセスする前に、水
#include <cstdioを> する#include <iostreamの> する#include <CStringの> する#include <アルゴリズム> 使用して名前空間STDを、構造体ノード { int型NUM。 int型データ; }。 ノード人[ 1005 ]。 int型のn; 長い長い合計。 ダブルANS; インラインブールCMP(ノードX、ノードY) { 場合(x.data == y.data)戻り x.num < y.num。 返す x.data < y.data。 } int型)(主 { scanf関数(" %のD "、&N) 以下のために(int型 i = 1 ; iが<= N; iが++ ) { scanf関数(" %dを"&人物[I] .DATA)。 人[i]は.num = I; } ソート(人物 + 1、人+ N + 1 、CMP)。 以下のために(int型 I = 1 ; I <= N- 1 ; I ++ ) の合計 + =人[i]は.dataの*(N- i)を、 以下のための(int型 I = 1;私は++; iが<= N ) のprintf(" %dの" 、人[I] .num)。 printf(" \ nを" ); printf(" %の.2lf "、1.0 *和/ N)。 リターン 0 ; }