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

蓝桥杯班级活动

题目描述

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

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

输入格式

输入共 2行。第一行为一个正整数 n。第二行为 nn 个由空格隔开的整数 a1,a2,...,ana1​,a2​,...,an​。

输出格式

输出共 1 行,一个整数。

输入样例: 
4
1 2 2 3
输出样例:
1

 思路:

题目要求有且仅有两个数相同,因此,我们要分别记录只出现一次的数和出现超过两次的数,如果只有出现一次的数,且其个数为c1,那么需要修改c1/2;如果只有出现超过两次的数,且其个数为c2,那么修改次数为c2,显然可以发现,修改只出现一次的数会更简单;那么如果c1,c2同时存在时,当c2>=c1,则要修改c1+(c2-c1)=c2次,反之,则要修改c2+(c1-c2)/2次

#include<bits/stdc++.h>
using namespace std;
#define int long long 
const int N = 1e6;
int n,C=0,c1=0,c2=0;
int c[N],a[N];
bool v[N];
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;for(int i=0;i<n;i++){cin>>a[i];c[a[i]]++;}for(int i=0;i<n;i++){if(c[a[i]]>2&&!v[a[i]]){c2+=c[a[i]]-2;v[c2]=true;}if(c[a[i]]==1) c1++;}if(c1>=c2) C=c2+(c1-c2)/2;if(c2>c1) C=c2;cout<<C<<endl;return 0;} 

细节:为了避免重复计算,所以当一个数出现次数大于等于两次时需要做标记。 

http://www.lryc.cn/news/539167.html

相关文章:

  • PHP支付宝--转账到支付宝账户
  • 2.18寒假
  • Docker 与持续集成 / 持续部署(CI/CD)的集成(二)
  • SQL Server的安装和简单使用
  • c/c++蓝桥杯经典编程题100道(19)汉诺塔问题
  • Linux 信号量
  • Qt开发①Qt的概念+发展+优点+应用+使用
  • 向量库(Vector Database)
  • torchsparse安装过程的问题
  • 【核心算法篇七】《DeepSeek异常检测:孤立森林与AutoEncoder对比》
  • Win10环境使用零讯ZeroNews内网穿透实现Deepseek对外服务
  • CUDA 安装 一直卡在Installing Nsight Visual Studio Edition
  • Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网
  • STM32 定时器产生定周期方法
  • 解锁机器学习核心算法 | 支持向量机:机器学习中的分类利刃
  • 青少年编程与数学 02-009 Django 5 Web 编程 21课题、部署
  • ARM系统源码编译OpenCV 4.10.0(包含opencv_contrib)
  • cmake:定位Qt的ui文件
  • (leetcode 1749 前缀和)1749. 任意子数组和的绝对值的最大值
  • 下载安装运行测试开源vision-language-action(VLA)模型OpenVLA
  • 【网络安全 | 漏洞挖掘】我如何通过Cookie Manipulation发现主域上的关键PII?
  • 【操作系统】操作系统概述
  • SQL Server 运算符优先级
  • Python的顺序结构和循环结构
  • 深入浅出TypedArray:网络数据处理、WebGPU与加密实战
  • http 响应码影响 video 标签播放视频
  • 观察者模式原理详解以及Spring源码如何使用观察者模式?
  • 【Spring】Spring配置文件
  • MSI微星电脑冲锋坦克Pro Vector GP76 12UGS(MS-17K4)原厂Win11系统恢复镜像,含还原功能,预装OEM系统下载
  • Unity合批处理优化内存序列帧播放动画