GESP认证C++编程真题解析 | 202406 七级

news/2026/1/18 9:02:41/文章来源:https://www.cnblogs.com/guolianggsta/p/19497784

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

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

适合人群:

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

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


编程题

P10723 黑白翻转

【题目来源】

洛谷:[P10723 GESP202406 七级] 黑白翻转 - 洛谷

【题目描述】

小杨有一棵包含 \(n\) 个节点的树,这棵树上的任意一个节点要么是白色,要么是黑色。小杨认为一棵树是美丽树当且仅当在删除所有白色节点之后,剩余节点仍然组成一棵树。

小杨每次操作可以选择一个白色节点将它的颜色变为黑色,他想知道自己最少要执行多少次操作可以使得这棵树变为美丽树。

【输入】

第一行包含一个正整数 \(n\),代表树的节点数。

第二行包含 \(n\) 个非负整数 \(a_1,a_2,\ldots,a_n\),其中如果 \(a_i=0\),则节点 \(i\) 的颜色为白色,否则为黑色。

之后 \(n-1\) 行,每行包含两个正整数 \(x_i,y_i\),代表存在一条连接节点 \(x_i\)\(y_i\) 的边。

【输出】

输出一个整数,代表最少执行的操作次数。

【输入样例】

5
0 1 0 1 0
1 2
1 3
3 4
3 5

【输出样例】

2

【算法标签】

《洛谷 P10723 黑白翻转》 #树形DP# #拓扑排序# #树的遍历# #GESP# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;const int N = 100005, M = N * 2;  // M是边数的两倍,因为是无向图
int n, ans;                       // n: 节点数, ans: 答案
int a[N];                         // a[i]: 节点i的状态,0表示白色,1表示黑色
int h[N], e[M], ne[M], idx;       // 邻接表存储树结构// 添加无向边
void add(int a, int b)
{e[idx] = b;          // 存储边的终点ne[idx] = h[a];      // 将新边插入链表头部h[a] = idx;          // 更新头指针idx++;               // 边编号自增
}// 深度优先搜索
// u: 当前节点
// fa: 父节点,防止走回头路
void dfs(int u, int fa)
{int s = 0;  // 统计子节点中黑色节点的数量// 遍历当前节点的所有邻居for (int i = h[u]; i != -1; i = ne[i]){int j = e[i];  // 邻居节点if (j == fa)   // 如果是父节点,跳过{continue;}// 递归处理子树dfs(j, u);// 累加子节点的颜色s += a[j];}// 关键条件判断:// 1. s > 0: 当前节点至少有一个黑色子节点// 2. a[u] == 0: 当前节点是白色if (s && !a[u]){ans++;      // 答案加1a[u] = 1;   // 将当前节点染成黑色}
}int main()
{// 输入节点数cin >> n;// 初始化邻接表memset(h, -1, sizeof(h));// 输入每个节点的初始颜色for (int i = 1; i <= n; i++){cin >> a[i];}// 输入n-1条边,构建树for (int i = 1; i < n; i++){int u, v;cin >> u >> v;add(u, v);  // 添加无向边add(v, u);}// 从任意一个黑色节点开始DFSfor (int i = 1; i <= n; i++){if (a[i] == 1)  // 找到第一个黑色节点{dfs(i, 0);  // 从该节点开始DFS,父节点为0break;}}// 输出答案cout << ans << endl;return 0;
}

【运行结果】

5
0 1 0 1 0
1 2
1 3
3 4
3 5
2

P10724 区间乘积

【题目来源】

洛谷:[P10724 GESP202406 七级] 区间乘积 - 洛谷

【题目描述】

小杨有一个包含 \(n\) 个正整数的序列 \(A=[a_1,a_2,\dots,a_n]\)

小杨想知道有多少对 \(<l,r>(1\le l\le r\le n)\) 满足 \(a_l\times a_{l+1}\times \dots \times a_r\) 为完全平方数。

一个正整数 \(x\) 为完全平方数当且仅当存在一个正整数 \(y\) 使得 \(x=y\times y\)

【输入】

第一行包含一个正整数 \(n\),代表正整数个数。

第二行包含 \(n\) 个正整数 \(a_1,a_2,\dots,a_n\),代表序列 \(A\)

【输出】

输出一个整数,代表满足要求的 \(<l,r>\) 数量。

【输入样例】

5
3 2 4 3 2

【输出样例】

2

【算法标签】

《洛谷 P10724 区间乘积》 #数论# #前缀和# #位运算# #GESP# #2024#

【代码详解】

// 40分
#include <bits/stdc++.h>
using namespace std;#define int long long  // 定义int为long long类型int n, ans;                     // n: 数组长度, ans: 答案
int a[100005][12];              // a[i][0]存储原数,a[i][1..11]存储质因数分解结果
int b[12] = {0, 0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};  // 前11个质数(从索引1开始)// 计算第k个数的质因数分解,并累加到前缀和中
void calc(int k)
{int x = a[k][0];  // 获取第k个数的原始值// 将前一个数的质因数分解结果复制到当前数for (int i = 1; i <= 11; i++){a[k][i] = a[k-1][i];}// 特殊处理x=1的情况if (x == 1){a[k][1] += 2;  // 1的特殊处理,将质数2的指数加2}// 对x进行质因数分解for (int i = 2; i <= 11; i++){// 不断除以质数b[i],直到不能整除为止while (x % b[i] == 0){x /= b[i];      // 除以质因数a[k][i]++;      // 对应质因数的指数加1}}
}signed main()  // 由于#define int long long,所以用signed main
{cin >> n;  // 输入数组长度// 读取n个数并计算每个数的质因数分解前缀和for (int i = 1; i <= n; i++){cin >> a[i][0];  // 将输入的数存储在a[i][0]calc(i);         // 计算第i个数的质因数分解}// 统计满足条件的子数组数量for (int i = 1; i <= n; i++)      // 子数组的右端点{for (int j = 0; j <= i; j++)  // 子数组的左端点-1(j=0表示从开始){int f = 0, s = 0;  // f: 是否不满足条件标志, s: 总指数和// 检查子数组a[j+1..i]是否满足条件for (int k = 1; k <= 11; k++){// 计算子数组中第k个质因数的总指数s += a[i][k] - a[j][k];// 检查这个质因数的指数是否为奇数if ((a[i][k] - a[j][k]) % 2){f = 1;  // 存在指数为奇数的质因数break;}}// 如果所有质因数的指数都是偶数,且总指数和不为0if (!f && s){ans++;  // 计数加1}}}cout << ans << endl;  // 输出结果return 0;
}
// 100分
#include <bits/stdc++.h>
using namespace std;#define int long long  // 将int定义为long long类型int n, x, y, ans;                     // n: 数字个数, x: 前缀异或和, y: 临时变量, ans: 答案
int a[1 << 11] = {1};                 // a[state]: 状态为state的前缀数量,初始a[0]=1
int b[11] = {0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29};  // 前10个质数(索引1-10)// 计算函数:返回y的质因数分解状态的二进制表示
int calc()
{if (y == 1)  // 如果y等于1,返回0{return 0;}int s = 0;  // 状态值,用二进制表示// 遍历前10个质数for (int i = 1; i <= 10; i++){int t = 0, c = 0;  // t: 当前质数的状态位, c: 当前质数的指数计数// 对y进行质因数分解while (y % b[i] == 0){y /= b[i];  // 除以质因数c++;         // 指数加1// 关键:只关心指数的奇偶性// 如果c是奇数,设置对应的状态位if (c % 2){t = 1 << i;  // 第i位设为1}else{t = 0;  // 第i位设为0}}s += t;  // 累加状态}return s;  // 返回状态值
}signed main()  // 由于使用了#define int long long,所以main要改为signed
{// 输入数字个数cin >> n;// 处理n个数字for (int i = 1; i <= n; i++){// 输入当前数字cin >> y;// 计算:y = 输入的数字 ⊕ calc()的返回值// 注意:这里y既用作输入,又在calc()中被修改y = x ^ calc();  // x是之前的前缀异或和// 统计答案:当前状态y出现的次数ans += a[y]++;  // 加上之前出现过的次数,然后计数加1// 更新前缀异或和x = y;}// 输出结果cout << ans << endl;return 0;
}

【运行结果】

5
3 2 4 3 2
2

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

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

相关文章

完整教程:深科技 | 电子表决设备在政务会议中的功能定位与品牌分析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Docker Swarm 部署 Zookeeper 集群

文章目录 Docker Swarm 部署 Zookeeper 集群 一、前置准备 二、核心部署方案:使用 Docker Stack 部署(推荐) 1. 编写 docker-compose.yml 文件 2. 关键配置说明 3. 执行部署命令 4. 查看部署状态 三、集群验证 1. 连接 Zookeeper 集群(客户端验证) 2. 查看集群状态 3. 验证…

尝试逐步创建“辅助审阅”工具-手札

尝试逐步创建“辅助审阅”工具-手札我想构建的程序,应该是如下的: ①私域场景,也就是说,使用本地部署的大模型; ②不要离开word/wps等工具,采用将大语言模型嵌入的方式; ③需要代码开源,能够自主控制全流程。 …

Docker Swarm 部署 Redis Cluster 集群

文章目录 Docker Swarm 部署 Redis Cluster 集群 一、前置准备 二、核心部署方案:Docker Stack 编排部署 1. 编写 docker-compose.yml 文件 2. 关键配置说明 3. 执行部署命令 4. 查看部署状态 三、Redis Cluster 集群初始化 1. 进入任意一个 Redis 容器 2. 执行集群初始化命令…

学习笔记——ARM Cortex-A 裸机开发体系架构

ARM Cortex-A 裸机开发体系架构一、ARM体系结构全景视图1. 嵌入式系统层级架构┌─────────────────────────────────────────────────┐ │ 应用层 (APP) │ ├────────────…

Elasticsearch 8.13.4 实战录:如何用“多字段”魔法同时搞定分词搜索与精准打击

在 Elasticsearch 8.13.4 的世界里&#xff0c;有一个让无数开发者头秃的“死结”&#xff1a;我想要像百度一样的全文搜索&#xff08;分词&#xff09;&#xff0c;又想要像数据库一样的精确匹配&#xff08;Keyword&#xff09;&#xff0c;这两者真的能共存吗&#xff1f; …

基于微信小程序的家电清洗预约管理系统的开题报告

基于微信小程序的家电清洗预约管理系统的开题报告 一、选题背景与意义 &#xff08;一&#xff09;选题背景 随着居民生活水平的提升和健康意识的增强&#xff0c;家电清洗需求日益旺盛&#xff0c;油烟机、空调、洗衣机等常用家电的定期清洗已成为家庭日常消费的重要组成部分。…

Mac M1芯片能否跑unet?ARM架构适配情况调查

Mac M1芯片能否跑unet&#xff1f;ARM架构适配情况调查 1. 背景与问题提出 随着苹果推出基于ARM架构的M系列芯片&#xff0c;越来越多的开发者开始关注在Mac设备上本地运行深度学习模型的可行性。其中&#xff0c;UNet类模型因其在图像分割、风格迁移等任务中的广泛应用而备受…

基于大数据爬虫+Hadoop深度学习的旅游景区游客流量数据分析系统的开题报告

基于大数据爬虫Hadoop深度学习的旅游景区游客流量数据分析系统的开题报告 一、选题背景与意义 &#xff08;一&#xff09;选题背景 随着文旅产业的数字化转型与智慧景区建设的深入推进&#xff0c;旅游景区游客流量的精准管控与科学分析成为行业核心需求。近年来&#xff0c;我…

AI智能证件照工坊:边缘优化技术详解

AI智能证件照工坊&#xff1a;边缘优化技术详解 1. 引言 1.1 项目背景与业务需求 在数字化办公、在线求职、电子政务等场景日益普及的今天&#xff0c;标准证件照成为个人身份信息的重要组成部分。传统方式依赖照相馆拍摄或使用Photoshop手动处理&#xff0c;流程繁琐且存在…

每日减重第五天:总爬楼数36,总步数:26486,最新体重144.4斤

背景&#xff1a;20160115体重是146.5&#xff0c;计划在一年的时间&#xff0c;把体重降到140以下。 一月目标&#xff1a;146.3以下 二月目标&#xff1a;145.75以下 三月目标&#xff1a;145.2 四月目标&#xff1a;144.65 今天的早上称的体重是144.4&#xff0c;如果仅按今…

AI vs. 传统测试:谁赢了2026的效率之战?

效率之战的背景与意义 在2026年的软件开发生态中&#xff0c;测试环节已成为数字化转型的核心瓶颈。随着敏捷开发和DevOps的普及&#xff0c;测试效率直接决定产品上市速度和竞争力。传统测试方法&#xff08;如手动测试和脚本自动化&#xff09;曾主导行业数十年&#xff0c;…

‌软件开发的AI化未来:开发者必备的5项新技能‌

当测试遇见AI的范式革命 随着GitHub Copilot贡献40%代码量、Diffblue自动生成单元测试覆盖率突破70%&#xff08;2025 Gartner数据&#xff09;&#xff0c;软件测试领域正经历结构性变革。传统的手动用例编写与重复性验证逐步被AI工具链替代&#xff0c;测试工程师的核心价值…

大模型

一、今日核心任务:理解提示词工程 我将今日的学习聚焦在一个明确的点上:如何通过优化提示词来与大模型更高效地协作。 二、关键进展与收获 认知突破: 大模型的核心机制:更深刻地理解了其“基于概率的序列生成”本质…

施密特触发器双阈值电压设定操作指南

施密特触发器双阈值电压设定实战指南&#xff1a;从原理到应用的完整解析你有没有遇到过这样的问题&#xff1f;一个看似简单的按键&#xff0c;按下去却在系统里“连击”好几次&#xff1b;传感器输出明明变化缓慢&#xff0c;MCU却频繁误判状态&#xff1b;长导线传来的信号总…

WASM 软解 H.265 性能优化详解

WASM 软解 H.265 性能优化详解 目录 概述WASM 软解 H.265 慢的核心原因 缺少汇编优化 & SIMD 支持单线程执行WASM 虚拟机开销 当前可行的优化措施 降低码率WASM 汇编优化 SIMD多线程解码原生软解 性能对比结论 硬解对比软解对比 为什么 WASM 多线程软解仍然可能比原生慢…

bert-base-chinese模型解释:特征重要性分析

bert-base-chinese模型解释&#xff1a;特征重要性分析 1. 技术背景与问题提出 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;预训练语言模型的兴起彻底改变了中文文本理解的技术范式。传统方法依赖于人工设计的语言学特征&#xff0c;如词性标注、句法结构和T…

GESP认证C++编程真题解析 | 202406 五级

​欢迎大家订阅我的专栏:算法题解:C++与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的…

GLM-ASR-Nano-2512云端部署:AWS GPU实例配置教程

GLM-ASR-Nano-2512云端部署&#xff1a;AWS GPU实例配置教程 1. 引言 1.1 业务场景描述 随着语音识别技术在智能客服、会议转录、内容创作等领域的广泛应用&#xff0c;对高性能、低延迟的自动语音识别&#xff08;ASR&#xff09;系统需求日益增长。GLM-ASR-Nano-2512 是一…

‌AI在软件测试中的革命:从手动到全自动的飞跃‌

引言&#xff1a;测试范式的历史性转折 随着DevOps和持续交付成为行业标准&#xff0c;传统测试方法已难以应对高频迭代的挑战。根据ISTQB 2025年度报告&#xff0c;全球73%的测试团队面临测试覆盖率与效率瓶颈。而AI技术的渗透正引发测试工作流的本质变革——从基于脚本的手动…