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

GESP认证C++编程真题解析 | 202412 六级

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

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

适合人群:

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

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


编程题

P11375 树上游走

【题目来源】

洛谷:[P11375 GESP202412 六级] 树上游走 - 洛谷

【题目描述】

小杨有一棵包含无穷节点的二叉树(即每个节点都有左儿子节点和右儿子节点;除根节点外,每个节点都有父节点),其中根节点的编号为 \(1\),对于节点 \(i\),其左儿子的编号为 \(2\times i\),右儿子的编号为 \(2\times i + 1\)

小杨会从节点 \(s\) 开始在二叉树上移动,每次移动为以下三种移动方式的任意一种:

  • 第 1 种移动方式:如果当前节点存在父亲节点,向上移动到当前节点的父节点,否则不移动;
  • 第 2 种移动方式:移动到当前节点的左儿子;
  • 第 3 种移动方式:移动到当前节点的右儿子。

小杨想知道移动 \(n\) 次后自己所处的节点编号。数据保证最后所处的节点编号不超过 \(10^{12}\)

【输入】

第一行包含两个正整数 \(n\)\(s\),代表移动次数和初始节点编号。

第二行包含一个长度为 \(n\) 且仅包含大写字母 \(\tt{U}\)\(\tt{L}\)\(\tt{R}\) 的字符串,代表每次移动的方式,其中 \(\tt{U}\) 代表第 1 种移动方式,\(\tt{L}\) 代表第 2 种移动方式,\(\tt{R}\) 代表第 3 种移动方式。

【输出】

输出一个正整数,代表最后所处的节点编号。

【输入样例】

3 2
URR

【输出样例】

7

【算法标签】

《洛谷 P11375 树上游走》 #模拟# #高精度# #栈# #GESP# #2024#

【代码详解】

#include <bits/stdc++.h>
using namespace std;#define int long long  // 将int定义为long long类型,防止溢出int n;      // 操作序列的长度
int x;      // 当前节点编号
string s;   // 操作序列
deque<char> dq;  // 双端队列,用于存储简化后的操作signed main()  // 因为定义了#define int long long,所以用signed代替int
{// 输入:操作序列长度n,初始节点x,操作序列scin >> n >> x >> s;// 在字符串前加空格,使下标从1开始,方便处理s = " " + s;// 第一步:简化操作序列// 核心思想:删除无用的操作对(如LRU、LUR、RLU、RUL等)for (int i = 1; i <= n; i++){if (dq.empty()){// 如果队列为空,直接加入当前操作dq.push_back(s[i]);}else if (dq.back() != 'U' && s[i] == 'U'){// 关键优化:如果队列尾部不是'U'且当前操作是'U'// 那么前一个操作和当前的'U'会相互抵消// 例如:'L'+'U' = 回到原位置,'R'+'U' = 回到原位置dq.pop_back();  // 删除前一个操作}else{// 其他情况,直接加入当前操作dq.push_back(s[i]);}}// 第二步:执行简化后的操作序列while (!dq.empty()){char c = dq.front();  // 从队列头部取操作dq.pop_front();        // 删除已取出的操作if (c == 'U' && x > 1){// 'U':移动到父节点x /= 2;  // 在完全二叉树中,父节点编号是子节点编号除以2}else if (c == 'L'){// 'L':移动到左子节点x *= 2;  // 左子节点编号是当前节点编号乘以2}else if (c == 'R'){// 'R':移动到右子节点x = x * 2 + 1;  // 右子节点编号是当前节点编号乘以2加1}}// 输出最终节点编号cout << x << endl;return 0;
}

【运行结果】

3 2
URR
7
http://www.jsqmd.com/news/261969/

相关文章:

  • NotaGen性能测试:不同GPU上的生成速度对比
  • 音乐视觉化革命:当播放器成为情感画布
  • YOLOFuse异常检测:1元钱诊断环境配置问题
  • Mac Mouse Fix:解锁第三方鼠标在macOS上的隐藏潜能
  • B站视频下载工具:轻松实现高清视频离线收藏的完整指南
  • Navicat无限试用完整教程:轻松解决14天限制问题
  • Youtu-2B低算力部署:端侧设备运行大模型实战指南
  • Daz To Blender实战宝典:攻克3D角色迁移的疑难杂症
  • 没Python基础怎么做情感分析?在线工具免编程,3步出结果
  • 终极socat使用指南:5分钟掌握Windows网络数据转发
  • 网盘直链下载助手终极教程:快速实现高速文件下载
  • GESP认证C++编程真题解析 | 202412 五级
  • 3大技术突破重构网盘下载新范式:直链解析工具架构深度解析
  • PvZ Toolkit 完整使用指南:轻松掌握植物大战僵尸修改技巧
  • RexUniNLU应用解析:智能舆情监测系统开发
  • Qwen3-4B长上下文处理实战:256K输入优化部署教程
  • 一键解锁Steam游戏:Onekey工具超详细使用指南
  • 从0开始学中文语义理解:BERT镜像保姆级教程
  • 终极游戏修改器:PvZ Toolkit完全配置指南
  • GTE模型调参指南:预装Jupyter环境,1块钱起随用随停不浪费
  • 如何实现网盘全速下载:2025年终极直链解析工具完整教程
  • ComfyUI-AnimateDiff-Evolved终极指南:从零到动画大师的5大突破
  • 全球SIM卡解锁新体验:Nrfr让数字边界消失
  • 2025网盘极速下载全攻略:8大平台免客户端直链解析方案
  • 零基础教程:用Qwen_Image_Cute_Animal轻松制作儿童绘本插画
  • 暗黑3按键宏终极指南:5步掌握D3KeyHelper自动化操作
  • Qwen3-4B-Instruct-2507实战:医疗健康问答机器人搭建
  • 玩转Z-Image-Turbo省钱攻略:按需付费比买显卡省上万元
  • Steam游戏清单获取困难?Onekey工具如何让复杂操作变得简单快捷
  • 一文说清TouchGFX开发环境搭建全过程