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

手机怎么建立网站企业展厅设计公司盛世笔特

手机怎么建立网站,企业展厅设计公司盛世笔特,怎么选择郑州网站建设,wordpress自动适应插件问题描述 小明的老师准备组织一次班级活动。班上一共有 n 名 (n 为偶数) 同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n 以内的正整数作为 id,第 i 名同学的 id 为 ai​。 老师希望…

问题描述

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

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

输入格式

输入共 2 行。

第一行为一个正整数 n。

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

输出格式

输出共 1 行,一个整数。

样例输入

4
1 2 2 3

样例输出

1

样例说明

仅需要把 a1​ 改为 3 或者把 a3 改为 1 即可。

评测用例规模与约定

解题代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int a[N];                // 存储每个同学的 id
map<int, int> m;         // 统计每个 id 出现的次数int main() {int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];m[a[i]]++;       // 统计每个 id 出现的次数}int cnt1 = 0;        // 统计出现次数为 1 的 id 数量int cnt2 = 0;        // 统计出现次数大于 2 的 id 中需要更改的数量int cnt = 0;         // 最终需要更改的 id 数量// 遍历 map,统计 cnt1 和 cnt2for (auto& pair : m) {if (pair.second == 1) {cnt1++;      // 统计出现次数为 1 的 id 数量} else if (pair.second > 2) {cnt2 += (pair.second - 2); // 统计出现次数大于 2 的 id 中需要更改的数量}}//判断更改的总数//若大于2 的ID总数大于等于1 的//最后和1配对完的所有数均要更改if(cnt2>cnt1){cnt=cnt2;}//若大于2 的ID总数小于等于1 的//最后等于1的两两配对else{cnt=(cnt1-cnt2)/2+cnt2;}cout << cnt ; return 0;
}

1. 理解问题

  • 目标:将 n 名同学分成 n/2 组,每组两人的 id 相同。

  • 限制:每个 id 出现的次数必须是偶数次(即每个 id 出现两次)。

  • 操作:通过更改某些同学的 id,使得所有 id 的出现次数满足上述条件。


2. 分析 id 出现次数的分布

  • 统计每个 id 出现的次数。

  • 将 id 的出现次数分为以下几类:

    1. 出现次数为 1:这些 id 必须被更改,因为无法单独成对。

    2. 出现次数为 2:这些 id 已经满足条件,无需更改。

    3. 出现次数大于 2:这些 id 需要减少出现次数,使其变为 2。


3. 确定需要更改的 id 数量

  • 出现次数为 1 的 id

    • 这些 id 必须被更改,因为无法单独成对。

    • 如果有 cnt1 个出现次数为 1 的 id,则需要至少 cnt1 / 2 次更改(两两配对)。

  • 出现次数大于 2 的 id

    • 这些 id 需要减少出现次数,使其变为 2。

    • 如果一个 id 出现 k 次(k > 2),则需要更改 k - 2 次。

  • 综合计算

    • 如果出现次数大于 2 的 id 需要更改的总次数 cnt2 大于等于出现次数为 1 的 id 数量 cnt1,则总更改次数为 cnt2

    • 否则,总更改次数为 (cnt1 - cnt2) / 2 + cnt2

4. 代码分析注释

  1. 输入数据

    • 使用数组 a[N] 存储每个同学的 id

    • 使用 map<int, int> m 统计每个 id 出现的次数。

  2. 统计 id 出现次数

    • 遍历数组 a,将每个 id 的出现次数记录在 map 中。

  3. 统计 cnt1 和 cnt2

    • cnt1:统计出现次数为 1 的 id 数量。

    • cnt2:统计出现次数大于 2 的 id 中需要更改的数量。例如,如果一个 id 出现 4 次,则需要更改 4 - 2 = 2 次。

  4. 计算需要更改的 id 数量

    • 情况 1:如果 cnt2 >= cnt1,即出现次数大于 2 的 id 数量大于等于出现次数为 1 的 id 数量,则需要更改的总数为 cnt2

    • 情况 2:如果 cnt2 < cnt1,则需要将多余的 cnt1 - cnt2 个出现次数为 1 的 id 两两配对,每对需要更改 1 次,因此总更改次数为 (cnt1 - cnt2) / 2 + cnt2

  5. 输出结果

    • 输出需要更改的 id 数量。


文章转载自:

http://Wy1UAc9Z.nrfrd.cn
http://Y34OEnlG.nrfrd.cn
http://mT5nH4P9.nrfrd.cn
http://ncFb3Umr.nrfrd.cn
http://mf5o9Msn.nrfrd.cn
http://YLATcb3N.nrfrd.cn
http://apci0Y9L.nrfrd.cn
http://ic9uJvgO.nrfrd.cn
http://HVIXXvUE.nrfrd.cn
http://QGtueQqG.nrfrd.cn
http://EtuA3RfC.nrfrd.cn
http://RN1ZJrZY.nrfrd.cn
http://3SLTJvbX.nrfrd.cn
http://sMZDopM8.nrfrd.cn
http://tMennA0p.nrfrd.cn
http://QjpVWhiL.nrfrd.cn
http://VeYMONb1.nrfrd.cn
http://H08B3mxe.nrfrd.cn
http://9RnFh7Xy.nrfrd.cn
http://3AM5FTDB.nrfrd.cn
http://REduFXaQ.nrfrd.cn
http://e33FYsF1.nrfrd.cn
http://692Bb8cn.nrfrd.cn
http://EalySJ1K.nrfrd.cn
http://m0JvJuxQ.nrfrd.cn
http://WGY3G1o7.nrfrd.cn
http://ajE7Bg0n.nrfrd.cn
http://cJOR62UA.nrfrd.cn
http://mdwX7GHC.nrfrd.cn
http://ltxeycyp.nrfrd.cn
http://www.dtcms.com/wzjs/622540.html

相关文章:

  • 昆明微信网站建设网站设计制造
  • 企业网站备案那么麻烦吗网站广告动态图怎么做
  • 视觉asp网站源码新乡网站优化公司价格
  • 徐州模板建站定制网站做网站开发学什么语言
  • 网站重复好口碑的网站制作安装价格
  • 做网站难吗_挣钱吗电子商务营销的发展现状
  • wordpress 编辑器 空白优化推广服务
  • 10000ip网站怎么做快速seo优化
  • 网站服务器选购php做学校网站免费
  • 单页面视频网站模板住房和城乡建设部网站第九批
  • 网站开发实例教程备案的网站建设书是什么
  • 建立网站如何规划和实施建设wordpress开启redis缓存
  • 九江做网站大概多少钱wordpress标题不居中
  • dede发布网站腾讯企业邮箱个人登录入口
  • 做全国社保代理的网站金湖企业网站制作
  • 目前网站建设用哪种语言推荐微信网站建设
  • 阿里巴巴国际站入驻费用营销方案案例范文通用
  • 原来做网站后来跑国外了公司官网制作开发
  • 视频网站公共关系怎么做网站设置子目录
  • 中国建设银行征信网站石家庄货运做网站公司
  • 郴州网站建设软件定制开发平台免费的网站平台有哪些
  • 重庆光龙网站建设做网站是什么会计科目
  • 媒体网站的销售怎么做模块化wordpress企业主题
  • 网站首页模板设计图企业网站建设兴田德润地址
  • 防城港建设局网站如何使用网站模板建设网站
  • 网站顶部动画代码ppt设计大赛
  • 如何查询网站开发语言wordpress子页面不显示
  • 建网站的软件有哪些长沙网站关键词优化
  • 排名轻松seo 网站网站建设那里
  • 做网站都能赚钱吗泽库县wap网站建设公司