2016-12-09 5 views
0

高さがNの建物が与えられています。N個の建物と同じ高さの建物を有するM個のグループ

同じ高さの建物を持つサイズMのグループを形成する必要があります。私は高さの高い建物を破壊して、その高さを小さな建物と同等にすることができます。 、

N = 8:

私は正確にN/M groups.Givenを形成するように破壊される建物の最小数を見つける必要があり、Nは常にM.

例えばため

で割り切れます建物のM = 4の

身長:6 4 5 1 5 2 3 2

回答:5

我々は最初のグループを形成するために2つの2者に高二建物5つのを破壊することができ高さ1の高さ3,4,6の建物を破壊して、同じ高さの建物を有する第2グループを形成する。

従って、サイズ4(M)の2(N/M)グループを形成する。破壊された建物は、Mの建物= 4

身長5.

N = 8:1 1 1 2 4 4 4 4

回答:1

は、誰も私を与えてくださいすることができますこれについてのいくつかのヒント。

+0

私はそれぞれ、その後、我々は4(M)基を有していても答えは5です。なぜ我々は、高さ1に6を構築変更し、高さ3に4を構築変更することができます理解しませんグループには2つ(N/M)の建物があり、各グループの高さは「1,2,3,5」です。したがって、私たちはちょうど2つの建物、建物6と建物4を変更しました。 – Kent

+0

サイズ4(M)のグループを作成する必要があり、グループの数はここで(N/M)2でなければなりません。 –

答えて

0

アルゴリズム

  1. (STLに注文したマップを言う)ハッシュ内のすべての高さ(昇順)を入れて - 高さのキーを、その高さの頻度などのデータを。
  2. N/M回の場合は、freq(sumと言う)を取得して追加を続けます。
  3. 結果= N - 合計。

擬似コード

arr[] = {6 4 5 1 5 2 3 2} 
map<int, int, greater<int>> mp; 
for(auto elem : arr) 
{ 
    if(data exist) 
     increase freq 
    else 
     insert key with freq as 1. 
} 
sum = 0 
for(i=0 to N/M) 
    sum += freq of mp[i] 

Result = N - sum 
+0

これが正しい答えだと思います。私は反例をたくさん持っています。 例:n = 8、m = 4高さ:2 2 2 3 4 4 4 4ここで、答えは1になるはずです。しかし、あなたのアプローチによって、4になるようになります。 –