当前位置: 首页 > news >正文

蓝桥杯 班级活动

问题描述

小明的老师准备组织一次班级活动。班上一共有 n 名同学(n 为偶数),老师想把所有同学进行分组,每两名同学一组。

为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 ida_i

老师希望通过更改若干名同学的 id,使得对于任意一名同学 i,有且仅有另一名同学 jid 与其相同(即 a_i = a_j)。

请问老师最少需要更改多少名同学的 id


输入格式

共 2 行:

  • 第 1 行:一个正整数 n(偶数)。
  • 第 2 行:n 个由空格隔开的整数 a_1, a_2, ..., a_n

输出格式

  • 输出 1 行,一个整数,表示最少需要更改多少名同学的 id

样例输入

4
1 2 2 3

样例输出

1

样例说明

只需要将 a_1 改为 3,或者将 a_3 改为 1,即可满足每个 id 出现恰好两次。


评测用例规模与约定

  • 对于 20% 的数据,保证 n ≤ 10^3
  • 对于 100% 的数据,保证 n ≤ 10^5
#include<bits/stdc++.h>
#include<stdio.h>

using namespace std;

int n, a = 0, b = 0, r, ans = 0;
vector<int> arr;

int main() {
    scanf("%d", &n);
    arr = vector<int>(n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    sort(arr.begin(), arr.end());
    for (int i = 0; i < n;) {
        r = i;
        while(r < n && arr[r] == arr[i]) r++;
        if (r - i > 2) a += (r - i - 2);
        else if (r - i == 1) b++;
        i = r;
    }
    if (a >= b) {
        ans += b;
        a -= b;
        ans += a;
    }
    else {
        ans += a;
        b -= a;
        ans += b / 2;
    }
    cout << ans;
    return 0;
}

思路解析

我的理解是贪心算法

对于多出来的,也就是出现次数大于2的,一定要修改一次,如果不修改,则会和前面两个一对矛盾,因为只能有两个一样。

对于少的,不够的,可以修改可以不修改,可以让多出来的和它一组,也可以让其他少的和它一组。

贪心策略就是尽量让多的和少的一组,如果还剩下多的,这些多的全部再修改一次变成其他数,如果剩下少的,只要修改n / 2次,因为他们本来就不重复

相关文章:

  • 【学习笔记】大模型架构设计与长上下文能力的实现
  • jmeter 工具安装及并发压测详解
  • PostgreSQL学习之一次一密口令认证(TOTP)
  • 【Git】git cherry-pick(将某个分支的 commit 改动复制到当前分支)
  • 诠视科技MR眼镜如何安装apk应用
  • 《Linux运维实战:Ubuntu 22.04使用pam_faillock实现登录失败处理策略》
  • Linux Shell 脚本使用YAD工具实现Shell图形化界面
  • CodeBrick笔记,一种支持低功耗的嵌入式操作系统
  • 【TCP/IP、HTTP等网络协议】
  • Android开发: Java文件中操作基础UI组件
  • spring security设置多个数据源和登录验证码
  • 第二届计算机网络和云计算国际会议(CNCC 2025)
  • 如何让AI套用现有ppt模板,并通过改文字批量生成新的ppt?【翻车版】
  • AI如何实际应用到自动化测试-实战篇
  • [python]基于yolov12实现热力图可视化支持图像视频和摄像头检测
  • scala基础学习-类(1.定义类)
  • 【身份安全】OAuth 2.0工作原理(一)
  • 企业搭建AI大模型平台,存储难题如何破?Infortrend普安存储GSx并行文件存储系统
  • 质量工程师的2025:从“找bug“到“造质量“的职业进化
  • 多省发布!第27届中国机器人及人工智能大赛各赛区比赛通知
  • 乌副总理:乌美签署矿产协议
  • 应急管理部派出工作组赴山西太原小区爆炸现场指导救援处置
  • 法治日报调查直播间“杀熟”乱象:熟客越买越贵,举证难维权不易
  • 新华每日电讯:从上海街区经济看账面、市面、人面、基本面
  • 十四届全国人大常委会举行第四十三次委员长会议 ,听取有关草案和议案审议情况汇报
  • 十大券商看后市|A股风险偏好有望边际改善,市场仍处黄金坑