蓝桥杯-班级活动

题目描述

小明的老师准备组织一次班级活动。班上一共有 ( n ) 名(( n ) 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 ( n ) 以内的正整数作为 id,第 ( i ) 名同学的 id 为 ( a_i )。

老师希望通过更改若干名同学的 id 使得对于任意一名同学 ( i ),有且仅有另一名同学 ( j ) 的 id 与其相同(( a_i = a_j ))。请问老师最少需要更改多少名同学的 id?

输入格式

输入共 2 行。

第一行为一个正整数 ( n )。

第二行为 ( n ) 个由空格隔开的整数 ( a_1, a_2, …, a_n )。

输出格式

输出共 1 行,一个整数。

输入输出样例

输入 #1

4
1 2 2 3

输出 #1

1

说明/提示

样例说明
仅需要把 ( a_1 ) 改为 3 或者把 ( a_4 ) 改为 1 即可。

评测用例规模与约定

  • 对于 20% 的数据,保证 ( n <= 10^3 )。
  • 对于 100% 的数据,保证 ( n <= 10^5 )。

题解:

一共有两种情况

  1. 只出现过一次的id个数 cnt1 >= 出现过2次以上的id个数 cnt2。 此时把 所有cnt2 都更改成一个id只出现过一次的, 再加上剩下的 cnt1 / 2
  2. 只出现过一次的id个数 cnt1 < 出现过2次以上的id个数 cnt2。 此时把 cnt1个cnt2 都改成一个id只出现过一次的, 再加上剩下的 cnt2 /2

ps: 说白了就是 当有cnt1的时候, 尽可能把cnt2变成cnt1, 当cnt2有剩余的话, 还需要改变 “剩余的cnt2的个数” 次, 当cnt1有剩余的话, 还需要改变 “剩余的cnt1的个数 / 2”

ac代码👇

#include <bits/stdc++.h>
using namespace std;unordered_map<int,int> mp;
int main()
{int n; cin >> n;for (int i = 0; i < n; i ++) {int x; cin >> x;mp[x] ++;}int cnt1 = 0, cnt2 = 0;for (auto it : mp){if (it.second == 1) cnt1 ++;  // id出现过一次的个数if (it.second > 2) cnt2 += it.second - 2;  // id出现次数大于2的都要改成别的id}if (cnt2 - cnt1 >= 0) cout << cnt1 + (cnt2 - cnt1) << endl;  // 情况1else  cout << cnt2 + (cnt1 - cnt2) / 2 << endl;    // 情况2return 0;	
}

觉得写的不错的话, 点个赞吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++标准库中string的底层实现方式

对于C中 std::string 的一些基本功能和用法&#xff0c;我们应该都很熟悉。但它底层到底是如何实现的呢? 其实在 std::string 的历史中&#xff0c;出现过几种不同的方式。下面我们来一一揭晓。 我们可以从一个简单的问题来探索&#xff0c;一个 std::string 对象占据的内存空…

RK3568笔记二十五:RetinaFace人脸检测训练部署

若该文为原创文章&#xff0c;转载请注明原文出处。 一、介绍 Retinaface是来自insightFace的又一力作&#xff0c;基于one-stage的人脸检测网络。RetinaFace是在RetinaNet基础上引申出来的人脸检测框架&#xff0c;所以大致结构和RetinaNet非常像。 官方提供两种主干特征提取网…

Python 中别再用 ‘+‘ 拼接字符串了!

当我开始学习 Python 时&#xff0c;使用加号来连接字符串非常直观和容易&#xff0c;就像许多其他编程语言&#xff08;比如Java&#xff09;一样。 然而&#xff0c;很快我意识到许多开发者似乎更喜欢使用.join()方法而不是。 在本文中&#xff0c;我将介绍这两种方法之间的…

关于数据库和数据表的基础SQL

目录 一. 数据库的基础SQL 1. 创建数据库 2. 查看当前有哪些数据库 3. 选中数据库 4. 删除数据库 5. 小结 二. 数据表的基础SQL 1. 创建数据表 2. 查看当前数据库中有哪些表 3. 查看指定表的详细情况(查看表的结构) 4. 删除表 5. 小结 一. 数据库的基础SQL 1. 创建…

Qt中的网络编程(Tcp和Udp)详解 及 实现

Qt中的网络编程&#xff08;Tcp和Udp&#xff09;详解 及 实现 代码 卡的格式不对&#xff0c;看我的代码标题去 拷贝 &#xff0c;共四个文件。 1、安装qty软件&#xff0c;官网直接下载 在线安装。 怕以后麻烦直接安装选择一个完整版本QT勾选。 在线下载i30多g应该&#xff…

Stream浅解析

Stream流浅解析 package com.w.earn.share;import java.util.*; import java.util.stream.Collectors;/*** Author yang kai bo* Date 2024/5/26 19:43* Description* 概念&#xff1a;stream流是一种对 Java 集合运算和表达的高阶抽象。* 优点&#xff1a;写法简单&#xf…

python内置函数map/filter/reduce详解

在Python中&#xff0c;map(), filter(), 和 reduce() 是内置的高级函数(实际是class)&#xff0c;用于处理可迭代对象&#xff08;如列表、元组等&#xff09;的元素。这些函数通常与lambda函数一起使用&#xff0c;以简洁地表达常见的操作。下面我将分别解释这三个函数。 1. …

mac安装git心得

我是买了一个新的mac但是当我安装git的时候遇见了很多问题 安装不上各种报错 首先我们直接打开git网址&#xff0c;然后打开mac的命令提示&#xff0c;里边输入git大概1g左右&#xff0c;下载完了直接好了

持续总结中!2024年面试必问 20 道 Redis面试题(七)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道 Redis面试题&#xff08;六&#xff09;-CSDN博客 十三、Redis集群的主从复制模型是怎样的&#xff1f; Redis集群的主从复制模型是一种高可用性架构&#xff0c;它允许数据在多个节点之间进行复制&#x…

pod 之资源限制 与健康检查

目录 一 资源限制 1&#xff0c;资源限制是什么 2&#xff0c;资源限制的 标准 3&#xff0c; k8s 创pod 显示 OOMKILLED 是 requests小了 还是limits小了 4&#xff0c; Pod 和 容器 的资源请求和限制 &#xff08;yaml&#xff09; 5&#xff0c; CPU 资源单位 6&…

xgboost项目实战-保险赔偿额预测与信用卡评分预测001

目录 算法代码 原理 算法流程 xgb.train中的参数介绍 params min_child_weight gamma 技巧 算法代码 代码获取方式&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1QV7nMC5ds5wSh-M9kuiwew?pwdx48l 提取码&#xff1a;x48l 特征直方图统计&#xff1a; fig, …

这次泰迪杯应该不能答辩

检查了里面还有没修改完的&#xff0c;只能但愿没看到 魔改了又去投水赛&#xff0c;理论加应用

各大模型厂商API使用:百度、阿里、豆包、kimi、deepseek

百度ERNIE(支持requests接口) ERNIE Speed、ERNIE Lite免费 免费测试下来模型ernie_speed输出吞吐量计算20-30来个,“{length/cost} tokens/s” 输出总长度/耗时 https://qianfan.cloud.baidu.com/ 文档: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dltgsna1o a…

JavaScript-函数的使用

函数的语法 函数就是包裹在花括号里面的代码&#xff0c;当用户需要多次使用 某个代码时&#xff0c;可以用函数包裹住这个代码&#xff0c;然后调用函数即可 比如js自己封装好的函数doucument.write(),console.log()等等 function functionname() {/*代码块*/ } 函数的组成部…

Flink Kylinv10 java8 Flink镜像制作

1&#xff09;基于麒麟v10版本制作JDK8基础镜像在这里插入代码片 FROM kylinv10/kylin:b09 RUN set -ex; \dnf install -y wget java-1.8.0-openjdk java-1.8.0-openjdk-devel tar; \yum clean all RUN java -version CMD ["echo", "kylinv10 JDK 8 image is …

智能进化:深度学习与进化计算的融合艺术

《进化深度学习》这本书深入探索了进化计算&#xff08;EC&#xff09;在深度学习领域的应用&#xff0c;为读者提供了一套丰富而实用的技术工具&#xff0c;这些工具可以贯穿深度学习的整个过程&#xff0c;助力研究者们解决各种复杂的问题。书中不仅详细介绍了遗传算法和进化…

【嵌入式DIY实例】-OLED显示DS1307/DS3231实时时钟

OLED显示DS1307/DS3231实时时钟 文章目录 OLED显示DS1307/DS3231实时时钟1、DS1307/DS1321介绍2、硬件准备3、代码实现本文将展示了如何使用ESP8266 NodeMCU开发板、DS3231 RTC 芯片和 SSD1306 OLED 显示屏(12864 像素)构建实时时钟。 DS3231 RTC有一个内置的温度传感器,我们…

力扣:344. 反转字符串

344. 反转字符串 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 示例 1&#xff1a; 输入&#xff1a;s ["…

Win11禁用数字强制签名:解放硬件选择,自由安装应用

工具原料&#xff1a; 操作系统版本&#xff1a;Windows 11 品牌型号&#xff1a;任意电脑或手机品牌型号 软件版本&#xff1a;任意版本的Win11操作系统 一、禁用数字强制签名的方法 方法一&#xff1a;使用高级启动选项 在Win11中&#xff0c;可以通过高级启动选项来禁…

怎么理解直接程序控制和中断方式?

直接程序控制 看完之后是不是依然一头雾水&#xff1f;来看下面两个例子 无条件传送 假设你正在使用键盘打字。当你敲击键盘上的一个键时&#xff0c;键盘会立即产生一个信号&#xff08;即输入数据&#xff09;&#xff0c;并且这个信号会立即被电脑接收。在这个过程中&…