news 2026/6/10 21:59:52

GESP认证C++编程真题解析 | B3874 [GESP202309 六级] 小杨的握手问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | B3874 [GESP202309 六级] 小杨的握手问题

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[B3874 GESP202309 六级] 小杨的握手问题 - 洛谷

【题目描述】

小杨的班级里共有N NN名同学,学号从0 00N − 1 N-1N1

某节课上,老师安排全班同学进行一次握手游戏,具体规则如下:老师安排了一个顺序,让全班N NN名同学依次进入教室。每位同学进入教室时,需要和已经在教室内学号小于自己的同学握手。

现在,小杨想知道,整个班级总共会进行多少次握手。

提示:可以考虑使用归并排序进行降序排序,并在此过程中求解。

【输入】

输入包含2 22行。第一行一个整数N NN,表示同学的个数;第二行N NN个用单个空格隔开的整数,依次描述同学们进入教室的顺序,每个整数在0 ∼ N − 1 0 \sim N-10N1之间,表示该同学的学号。

保证每位同学会且只会进入教室一次。

【输出】

输出一行一个整数,表示全班握手的总次数。

【输入样例】

4 2 1 3 0

【输出样例】

2

【算法标签】

《洛谷 B3874 小杨的握手问题》 #树状数组# #递归# #排序# #GESP# #2023#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=300005;// 树状数组大小,要大于最大可能的值intn;// 数组长度intans;// 逆序对总数inttr[N];// 树状数组/** * 计算lowbit:返回x的二进制表示中最低位的1所对应的值 * 例如:lowbit(6)=2,因为6的二进制是110,最低位的1表示2 * @param x 输入数字 * @return lowbit值 */intlowbit(intx){returnx&-x;// 利用补码性质:x & -x}/** * 树状数组更新操作 * 在位置x上增加c * @param x 更新位置 * @param c 增加的值 */voidadd(intx,intc){// 从x开始,沿lowbit路径向上更新所有包含x的区间for(inti=x;i<=N;i+=lowbit(i)){tr[i]+=c;}}/** * 树状数组查询操作 * 查询前缀和[1, x] * @param x 查询位置 * @return 前缀和 */intquery(intx){intres=0;// 从x开始,沿lowbit路径向下累加for(inti=x;i;i-=lowbit(i)){res+=tr[i];}returnres;}signedmain()// 因为使用了#define int long long{// 输入数组长度cin>>n;// 从后向前遍历数组for(inti=n;i>=1;i--){intx;cin>>x;x++;// 将数值从0-based转为1-based,避免树状数组处理0// 查询在当前位置之前(在原始顺序中)有多少个比x小的数// 因为是从后向前遍历,所以query(x)返回的是已经处理过的数中小于等于x的数量// 但我们需要的是严格小于x的数量,所以这里有问题ans+=query(x);// 将当前数加入树状数组add(x,1);}// 输出逆序对总数cout<<ans<<endl;return0;}

【运行结果】

4 2 1 3 0 2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:03:35

13、量子退相干:从基础到复杂情境的深入剖析

量子退相干:从基础到复杂情境的深入剖析 在量子物理的研究中,退相干是一个至关重要的概念,它描述了量子系统如何从量子态转变为经典态。本文将围绕量子布朗运动(QBM)模型展开,深入探讨退相干过程中的多个关键方面,包括相干态叠加的退相干、首选态的选择以及简单模型的局…

作者头像 李华
网站建设 2026/6/10 11:13:26

FaceFusion镜像一键部署指南:Docker环境下极速启动

FaceFusion镜像一键部署指南&#xff1a;Docker环境下极速启动 在短视频创作、数字人生成和影视后期日益依赖AI视觉技术的今天&#xff0c;人脸替换已不再是实验室里的概念&#xff0c;而是实实在在落地到内容生产流水线中的关键环节。FaceFusion作为开源社区中表现突出的人脸交…

作者头像 李华
网站建设 2026/6/10 11:07:51

19、量子信息科学中的光子:从熵到纠缠态的深入探索

量子信息科学中的光子:从熵到纠缠态的深入探索 1. 冯诺依曼熵 在信息理论中,许多热力学概念都有了新的表述方式。比如,熵用于衡量系统的无序程度,而香农熵则用于衡量经典概率分布的不确定性。香农熵的概念可以应用于量子力学,只不过在量子力学中,经典概率分布被密度算符…

作者头像 李华
网站建设 2026/6/9 19:24:42

25、量子信息:纠缠、纯化与纠错

量子信息:纠缠、纯化与纠错 1. 量子纠错基础 在量子计算中,我们将 $k$ 个逻辑量子比特编码到 $n$ 个物理量子比特中。码字所在的子空间 $H_L$ 维度为 $2^k$,而所有量子比特的希尔伯特空间 $H$ 维度为 $2^n$。可能的错误算子(由最多 $t$ 个泡利算子的张量积组成)会将 $H_…

作者头像 李华
网站建设 2026/6/10 12:50:04

26、量子信息中的纠缠:定义、检测与特性

量子信息中的纠缠:定义、检测与特性 1. 混合态纠缠的定义 在量子信息领域,对于混合态的纠缠需要进行明确定义。如果一个态不能通过局域操作(以及经典通信)从一个积态制备出来,那么这个态就被称为纠缠态。这个定义具有多方面的合理性: - 它与之前对纯态纠缠的定义相兼容…

作者头像 李华
网站建设 2026/6/10 14:26:51

【Open-AutoGLM文本准确率突破】:9大优化策略揭秘,提升精度高达47%

第一章&#xff1a;Open-AutoGLM文本准确率提升的背景与意义在自然语言处理领域&#xff0c;大语言模型的文本生成能力正面临日益增长的准确性挑战。Open-AutoGLM作为开源自动推理框架&#xff0c;致力于通过结构化提示工程与动态校验机制提升生成结果的可靠性。其核心目标是在…

作者头像 李华