ber_ker 2024-05-05 11:58 采纳率: 44.4%
浏览 1

一道简单的问题【888】

img

特发热体吴青峰因特网菲亚特无法瓦特放大是的哇跨越u额范围公寓房额u付服务特勤服也王启发特扶人为峰

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-05 11:58
    关注

    引自免费微信小程序:皆我百晓生

    为了解决这个问题,我们可以按照以下步骤进行:

    1. 读入数据:包括花的数量 n 和要选取的花朵数量 k,以及每朵花的美丽值 b1, b2, ..., bn
    2. 对花朵的美丽值进行排序。
    3. 计算所有可能的中位数花朵位置。
    4. 遍历这些中位数位置,计算对应的不和谐度,并记录最小的不和谐度。
    5. 输出最小的不和谐度。

    以下是C++代码实现:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    int getHarmony(int a[], int k, int pos) {
        // 计算左右两边数组长度
        int left = (pos + 1) / 2;
        int right = k - left;
    
        // 计算左侧最大值和右侧最小值
        int max_left = a[pos];
        for (int i = pos - 1; i >= pos - left && i >= 0; --i) {
            max_left = std::max(max_left, a[i]);
        }
        int min_right = a[pos];
        for (int i = pos + 1; i <= pos + right && i < k; ++i) {
            min_right = std::min(min_right, a[i]);
        }
    
        return max_left - min_right;
    }
    
    int main() {
        int n, k;
        std::cin >> n >> k;
    
        std::vector<int> beauty(n);
        for (int i = 0; i < n; ++i) {
            std::cin >> beauty[i];
        }
    
        std::sort(beauty.begin(), beauty.end());
    
        int min_harmony = INT_MAX;
        for (int pos = 0; pos < k; ++pos) {
            if ((pos == k - 1 || pos == 0) && k % 2 == 0) continue; // 如果k为偶数且pos为边界,则跳过,因为中位数不唯一
            min_harmony = std::min(min_harmony, getHarmony(beauty.data(), k, pos));
        }
    
        std::cout << min_harmony << std::endl;
        return 0;
    }
    

    这段代码首先读取输入,然后对花朵的美丽值进行排序。接下来,它遍历所有可能的中位数位置,计算每个位置上的不和谐度,并更新最小不和谐度。注意,当k为偶数时,中位数有两个,我们只需要考虑其中一个位置(这里我们只处理位于中间的那朵花)。最后,程序会输出最小的不和谐度。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月5日

悬赏问题

  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)
  • ¥15 船舶旋回实验matlab
  • ¥30 SQL 数组,游标,递归覆盖原值
  • ¥15 为什么我的数据接收的那么慢呀有没有完整的 hal 库并 代码呀有的话能不能发我一份并且我用 printf 函数显示处理之后的数据,用 debug 就不能运行了呢
  • ¥20 gitlab 中文路径,无法下载
  • ¥15 用动态规划算法均分纸牌
  • ¥30 udp socket,bind 0.0.0.0 ,如何自动选取用户访问的服务器IP来回复数据