M组的形式具有与N建筑物相等高度的建筑物

Form M groups having buildings of equal height from N buildings

本文关键字:建筑物 高度      更新时间:2023-10-16

我已经得到了n个建筑物的高度。

我必须形成具有相等高度建筑物的大小的组。给出,我可以摧毁高度更高的建筑物,以使其高度等于较小的建筑物。

我必须找到要破坏的最小建筑物数量,以完全形成N/M组。

例如:

n = 8,m = 4

建筑物的高度:6 4 5 1 5 2 3 2

答案:5

我们可以摧毁两座高度5到两个2的建筑物,以形成第一组,然后销毁高度3,4,6至高度1的建筑物,形成第二组,其高度相等1。

因此,我们形成了4(m)的2(n/m)组。最小要破坏的建筑物数为5。

n = 8,m = 4

建筑物的高度:1 1 1 2 4 4 4 4 4

答案:1

任何人都可以给我一些暗示。

算法

  1. 将所有高度(增加顺序)放在哈希(例如在stl上的订购地图) - 键为高度,数据作为该高度的频率。
  2. 对于N/M次,获取FREQ(例如总和)并继续添加。
  3. 结果= n -sum。

伪代码

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