欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 蓝桥杯比赛python程序设计——班级活动

蓝桥杯比赛python程序设计——班级活动

2025/4/3 6:26:11 来源:https://blog.csdn.net/weixin_66547608/article/details/146888110  浏览:    关键词:蓝桥杯比赛python程序设计——班级活动

问题描述

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

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

输入格式

输入共 22 行。

第一行为一个正整数 nn。

第二行为 nn 个由空格隔开的整数 a1,a2,...,ana1​,a2​,...,an​。

输出格式

输出共 11 行,一个整数。

样例输入

4
1 2 2 3

样例输出

1

样例说明

仅需要把 a1a1​ 改为 33 或者把 a3a3​ 改为 11 即可。

评测用例规模与约定

对于 20%20% 的数据,保证 n≤103n≤103。

对于 100%100% 的数据,保证 n≤105n≤105。

运行限制

语言最大运行时间最大运行内存
C++1s256M
C1s256M
Java2s256M
Python33s256M
PyPy33s256M
Go3s256M
JavaScript3s256M

完整代码:

import os
import sys
# 请在此输入您的代码
n = int(input())
data = list(map(int,input().split()))
data1={}
sum1=0
sum2=0
for i in data:data1[i]=data1.get(i,0)+1
for i,j in data1.items():if j<2:sum1=sum1+1if j>2:sum2=sum2+j-2
if sum1>=sum2:print(sum2+(sum1-sum2)//2)
else: print(sum2)

 

 

代码功能概述

这段 Python 代码的主要功能是对输入的数据进行处理,统计其中出现次数少于 2 次和多于 2 次的元素相关情况,然后根据统计结果计算并输出一个数值。具体来说,程序首先读取一个整数 n 表示数据的数量,接着读取 n 个整数并存储在列表 data 中,之后对列表中的元素进行计数统计,最后根据统计结果计算并输出结果。

代码详细分析

1. 导入模块

python

import os
import sys

导入了 os 和 sys 模块,但在后续代码中并未使用这两个模块,可将其移除。

2. 读取输入数据

python

n = int(input())
data = list(map(int, input().split()))

  • 从标准输入读取一个整数 n,表示接下来要输入的数据个数。
  • 读取一行输入,将其按空格分割成多个字符串,再将每个字符串转换为整数,最后将这些整数存储在列表 data 中。
3. 统计元素出现次数

python

data1 = {}
for i in data:data1[i] = data1.get(i, 0) + 1

  • 初始化一个空字典 data1,用于统计列表 data 中每个元素的出现次数。
  • 遍历列表 data,对于每个元素 i,使用 get 方法获取其在字典中的当前计数,如果元素不存在则默认为 0,然后将计数加 1。
4. 统计出现次数少于 2 次和多于 2 次的元素情况

python

sum1 = 0
sum2 = 0
for i, j in data1.items():if j < 2:sum1 = sum1 + 1if j > 2:sum2 = sum2 + j - 2

  • 初始化两个变量 sum1 和 sum2,分别用于记录出现次数少于 2 次和多于 2 次的元素相关统计值。
  • 遍历字典 data1 的键值对,对于出现次数 j 少于 2 次的元素,将 sum1 加 1;对于出现次数 j 多于 2 次的元素,将 j - 2 累加到 sum2 中。
5. 根据统计结果计算并输出结果

python

if sum1 >= sum2:print(sum2 + (sum1 - sum2) // 2)
else:print(sum2)

3. 统计元素出现次数

python

data1 = {}
for i in data:data1[i] = data1.get(i, 0) + 1

4. 统计出现次数少于 2 次和多于 2 次的元素情况

python

sum1 = 0
sum2 = 0
for i, j in data1.items():if j < 2:sum1 = sum1 + 1if j > 2:sum2 = sum2 + j - 2

5. 根据统计结果计算并输出结果

python

if sum1 >= sum2:print(sum2 + (sum1 - sum2) // 2)
else:print(sum2)
  • 如果 sum1 大于等于 sum2,则计算 sum2 + (sum1 - sum2) // 2 并输出。
  • 否则,直接输出 sum2

    代码功能概述

    这段 Python 代码的主要功能是对输入的数据进行处理,统计其中出现次数少于 2 次和多于 2 次的元素相关情况,然后根据统计结果计算并输出一个数值。具体来说,程序首先读取一个整数 n 表示数据的数量,接着读取 n 个整数并存储在列表 data 中,之后对列表中的元素进行计数统计,最后根据统计结果计算并输出结果。

    代码详细分析

    1. 导入模块

    python

    import os
    import sys
    
     

    导入了 os 和 sys 模块,但在后续代码中并未使用这两个模块,可将其移除。

    2. 读取输入数据

    python

    n = int(input())
    data = list(map(int, input().split()))
    
  • 从标准输入读取一个整数 n,表示接下来要输入的数据个数。
  • 读取一行输入,将其按空格分割成多个字符串,再将每个字符串转换为整数,最后将这些整数存储在列表 data 中。

  • 初始化一个空字典 data1,用于统计列表 data 中每个元素的出现次数。
  • 遍历列表 data,对于每个元素 i,使用 get 方法获取其在字典中的当前计数,如果元素不存在则默认为 0,然后将计数加 1。

  • 初始化两个变量 sum1 和 sum2,分别用于记录出现次数少于 2 次和多于 2 次的元素相关统计值。
  • 遍历字典 data1 的键值对,对于出现次数 j 少于 2 次的元素,将 sum1 加 1;对于出现次数 j 多于 2 次的元素,将 j - 2 累加到 sum2 中。
  • 如果 sum1 大于等于 sum2,则计算 sum2 + (sum1 - sum2) // 2 并输出。
  • 否则,直接输出 sum2

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词