C++信奥GESP四级的常见题型和解题模板速查表

彭彭老师

题型一:字符串处理

典型真题:小杨的字典(4031)、相似字符串(4047)

核心套路:逐字符扫描 + 状态记录

cpp 复制代码
// 模板:按字符类型分类处理
for (int i = 0; i < s.size(); i++) {
    if (s[i] >= 'a' && s[i] <= 'z') {
        // 字母:拼接到当前单词
    } else {
        // 标点/分隔符:处理之前积累的单词,然后输出该字符
    }
}
// ️ 别忘了处理末尾遗留的单词

易错点:末尾无分隔符时漏处理最后一个单词;空单词的边界判断。


题型二:排序 + 贪心

典型真题:田忌赛马(4032)、做题(4048)

核心套路:先排序,再贪心匹配

cpp 复制代码
// 模板:排序 + 贪心匹配
sort(a, a + n);
int day = 1; // 或 wins = 0
for (int i = 0; i < n; i++) {
    if (a[i] >= day) {  // 能满足当前需求
        day++;          // 或 wins++
    }
}
cout << day - 1 << endl;

口诀:先排序,再配对;能赢就赢,赢不了就送掉。


题型三:模拟算法

典型场景:填幻方、变长编码、Recamán 序列、递推构造序列

核心套路:严格按题目描述一步步实现

cpp 复制代码
// 模板:递推/构造序列
a[1] = 1;
for (int i = 2; i <= n; i++) {
    if (/* 满足条件 */) {
        a[i] = /* 规则1 */;
    } else {
        a[i] = /* 规则2 */;
    }
}

口诀:题目说啥你干啥,变量别乱改,样例手动算一遍。


题型四:数论基础

典型场景:素数判断、绝对素数、进制转换

cpp 复制代码
// 模板:素数判断 O(√n)
bool isPrime(int n) {
    if (n <= 1) return false;
    if (n == 2) return true;
    if (n % 2 == 0) return false;
    for (int i = 3; i <= sqrt(n); i += 2) {
        if (n % i == 0) return false;
    }
    return true;
}

易错点 :循环到 √n 而非 n,否则大数据会超时。


题型五:二维数组 / 矩阵

典型场景:画布裁剪、图像压缩、黑白方块、矩阵运算

cpp 复制代码
// 模板:矩阵遍历
for (int i = 0; i < n; i++) {         // 外层:行
    for (int j = 0; j < m; j++) {     // 内层:列
        // 处理 matrix[i][j]
    }
}
// 主对角线:matrix[i][i]
// 副对角线:matrix[i][n-1-i]

易错点:行列越界、中心元素重复计算。


题型六:编辑距离 / 双指针

典型真题:相似字符串(4047)

核心套路:根据长度差分情况讨论

长度差 允许操作 判断方法
> 1 不可能 直接 false
= 0 替换 统计不同字符数 ≤ 1
= 1 插入/删除 双指针,允许跳过较长串一个字符

通用解题流程

  1. 先看样例,手动模拟一遍输入输出
  2. 识别题型:字符串?贪心?模拟?数论?
  3. 拆小步骤,分步写代码
  4. 注意边界:数组开够大小、末尾处理、空值判断
  5. 测完样例再测边界:n=1、全相同、全不同

️ 高频易错点汇总

易错点 说明
数组越界 N=10⁶ 时数组要开到 10⁶+5
整数溢出 大数累加用 long long
末尾漏处理 循环结束后检查缓冲区是否非空
排序后忘用 贪心题一定要先排序
输出多/少 1 day++ 后循环结束,输出要 day-1

这份速查表基本覆盖了 GESP 四级上机题 90% 以上的考点。建议考前过一遍模板,重点练习字符串处理排序+贪心这两类,它们出现频率最高。

相关推荐
nvvas4 分钟前
Java 入门(四):数组——数据的集合管理
java·开发语言
钓鱼的肝7 分钟前
csp-j-s总结(2)
c++·经验分享·笔记·算法·青少年编程
重生的黑客23 分钟前
Qt 常用控件精讲(1):QWidget 核心属性全解 —— 从 geometry 到 qrc 与 QSS
c++·qt·qwidget·qss·常用控件
Hespethorn37 分钟前
取 `X-Forwarded-For` 首段做频控 key,等于把限流开关交给了调用方
c++
米糕闯编程37 分钟前
鱼香ros2(七)功能包组织C++节点
c++·ros2·cmakelists
Y3815326621 小时前
SERP 数据清洗实战:字段标准化、日期解析与去重键
开发语言·数据库·python·python数据库
汉克老师1 小时前
GESP2026年9月认证C++四级( 第三部分编程题(1、新汉诺塔))精讲
c++·gesp·小学生·学c++编程
君顾11 小时前
本地城市低空经济管理系统定制:城市级低空运营平台架构与落地实战
java·开发语言·飞手
多多鼠2 小时前
System Prompt 的“版本漂移”问题:从变更管理到 A/B 测试体系
开发语言·网络·人工智能·python·langchain
唠玖馆2 小时前
智能指针详解
c++