HDU 6851バケーション(思考+貪欲)

ポータル

•問題の意味

ライン近い交通信号からnに0からnまで番号0、N + 1本のラインは、交通信号灯の車両を有します

それぞれが最大速度V、本体の長さL、及び信号機Sの線からの距離を持つことになり、

フロントは車がラインに達した後、ラインに達します

車が車の前に閉鎖されていないので、車は最高速度で走行することができる場合

次の車のフロント場合は、リア旅行前にフロントに近く、追い越すことはできません!

でも、交通信号ラインの後に追い越すことはできません!

ラインに到達するために、最初の0の最短時間は1最も遠いオフラインで尋ねました

•アイデア

私は追い越すことができないので、その後、2つの可能性があるときに、ラインに遠い車

①$ T = \ FRAC {S_ {0} {V_ {0}} $に自身の行を

②最初の行のp $の\のFRAC {S_ {P} + \ sum_ {1} ^ {P} L_ {I}} {V_ {P}} $の後に車に接続されました

これがそのように、その後、車の後ろに数えられる理由を説明

 2台の車の$ A_ {1} $速度$ Vの$、$のA_ {0} $速度2Vの$ $が存在すると仮定

車のバック$ {P} $に到達するようにしながら、現在の車両は、$ p個の$表面ポイントに到達すると、両方同じに費やされた時間

同様に見て

場合の$ A_ {1} $のOする$ $到達点は、$ A_ {0} $到達する$ L_ {1} $点、すなわち$のA_ {0}フィニッシュラインから$距離があるの$ A_ {1}の$車の長さ

②式は$ pが$(車の後ろの$ P $は全てアップ接続されている)の後ろの最初の車の中であっても、

最初の車がフィニッシュラインの$ P $を到達するときは、フィニッシュラインへの車から最も遠い距離があるその車の背後にあるすべての$ P $の車の長さ - 車長持ち自分の車

すなわち、$合計= \ sum_ {1} ^ {P} L_ {I} $

したがって、時間を走行する時間、すなわち$ $ \ FRAC {S_ {P}} {V_ {P}} + \ FRAC {\と遠い車の$ V_ {P} $の$の合計に時間走行$ Pする$ +車でありますsum_ {1} ^ {P} L_ {I}} {V_ {P}} $

車の後ろの地面不確実なので、それは最高の時間を計算することが可能です、

所要時間は確かに彼の後ろに選択されます背後に長い説明低速であります

•コード

1つの#include <ビット/ STDC ++ H>
 2  使用して 名前空間STDを、
3  のconst  int型 MAXN = 1E6 + 6 4  ダブルL [MAXN]、[MAXN]、V [MAXN]です。
5  二重和[MAXN]。
6  のint main()の
 7  {
 8      INT N。
9      ながら(〜のscanf(" %d個"、&N))
 10      {
 11          のためのint型 I = 0 ; iが<= N; iが++ 12          {
 13             scanf関数(" %のLF "、&L [I])。
14              場合(I == 0 15が                 続け16              和[I] =和[I- 1 ] + L [i]は、
17          }
 18          のためのint型 I = 0 ; iが<= N; iが++ 19              のscanf(" %のLF "、&S [I])。
20          のためにint型 I = 0 ; iが<= N iが++ 21              のscanf(" %のLF "、&V [I]);
 22は 
23である         /// 仕上げ横切っ単独で
24の         ダブル ANS =のS [ 0 ] / V [ 0 ];
 25  
26である         /// エンドポイントを介してライン
27          のためにint型私は= 1 I <= N; ; I ++ 28              ANS = MAX(ANS、(S [I] + SUM [I])/ V [I]);
 29  
30          のprintf(" %.10f \ N- " 、ANS);
 31である     }
 32 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/MMMinoz/p/11599937.html