HDU 6709釣りマスター貪欲

イタリアは明確ではなかったことを感じ、手は焼き魚以上待たさすることができます。

このサイクルは、このために待って焼き、魚をキャッチし、私たちは魚をキャッチし始め、各魚に要する時間が非常に長い調理すると仮定すると、この表面焼き魚。その後、合計時間は、K +σT[I]です。

しかし、実際には、特に高速の一部焼き魚、この焼き魚の顔があるかもしれない、私の顔は、無駄なストーブの時間を引き起こし、新しい魚をキャッチしていません。

私たちは、そのバーベキューの際に、私たちは魚のトン[I] / Kをキャッチすることができ、私のために魚を検討します。

σTは、[I] / K> = nの場合 - 1、我々は釣りの合理的な方法の順序をアレンジすることができ、その時間ので炉が浪費されません。合計時間は、K +σT[I]です。

もしσT[i]は/ K <N - 1、そして我々は、必然的にいくつかの時間に炉を無駄にする必要があります。トンの魚追加のキャッチにストーブの時間の[i]の%のK - Iバーベキュープロセスの魚は、我々はKを無駄にすることができます。

私たちは、σT[I] / Kとn見て - どのくらいの魚との間に1ギャップを、より小さなKを選択してください - トンを補うために、[I]%kを。

長い長い開くことを忘れないでください 

1の#include <cstdioを>
 2の#include <アルゴリズム>
 3  使用して 名前空間STDを、
4のtypedef 長い LL。
5  INT T、N、K、CNT。
6  LLティム。
7  int型 T [ 100100 ]、LST [ 100100 ]。
8  INT メイン()
 9  {
 10      (scanf関数(" %のD "、&​​T); T =!0 ; T-- 11      {
 12          のscanf(" %D%dの"、&​​N、&K)。
13          ティム= K。
14          CNT = 0 15          のためにint型 i = 1 ; iが<= N iが++ 16              のscanf(" %dの"、およびT [I])。
17          のためには、int型 i = 1 ; iがn = <; iは++ 18          {
 19              ティム+ = T [i]は、
20              CNT + = T [I] / K。
21              LST [I] = K - T [i]の%K。
22          }
 23          もし(CNT <N - 1 24          {
 25              ソート(+ LST 1、LST + N + 1 )。
26              のためには、int型 I = 1 ; - iが<= nは1 - CNTを、iは++ 27                  ティム+ = LST [I]。
28          }
 29と          のprintf(" %LLDする\ n " 、TIM)。
30      }
 31      リターン 0 32 }

 

おすすめ

転載: www.cnblogs.com/iat14/p/11403551.html