OneCoder Avatar
OneCodercoderli.com · 1022 篇博文
ONECODER · DEVELOPER’S KNOWLEDGE BASE

把每一次想明白的技术,留在这里。

一个中年人的技术自留地。记录学习 C++、GESP/NOI 信奥算法、Java 架构演进与 Python 的心得体会。 始于 2012,现已积累 1022 篇独立技术笔记。

1022累计博文
545GESP考级题解
14 年坚持记录
128万+全站总阅读
微信公众号二维码GESP/CSP 学习公众号
📌 核心置顶 · GESP 编程与算法

【置顶】【GESP】C++ 认证学习资源汇总(26年9月17日更新)

本置顶将汇总本站发布的GESP认证考试相关资源,并进行了分类整理,不定期更新。 GESP资源专项站,Wiki式阅读,专项学习更友好: GESP资源专项站 所有源代码详见C++ 学习项目:yummy-code(https://github.com/lihongzheshu...

📅 2026-09-17·⏱️ 201 分钟·#GESP
考级精选题解C++ 算法考级专栏
GESP 编程与算法 · 五级··33 分钟

【GESP/CSP考点精讲】GESP五级 / CSP-J 必背:二分查找为什么会死循环?mid=(l+r)/2 与 (l+r+1)/2 终极判定指南

算法竞赛圈流传着一句经典的自嘲:“二分查找思路只需十秒钟,调试边界死循环却要两小时!”为什么明明只是在一个有序数组里折半找数,有的时候写 mid = (l + r) / 2 顺畅通关,有的时候把 r = mid 换成 l = mid,程序就瞬间卡死在 while (l...

五级C++ 算法考级专栏
GESP 编程与算法 · 五级··34 分钟

【GESP/CSP考点精讲】GESP五级 / CSP-J 必背:快速排序(Quick Sort)基准划分原理、不稳定性与 O(n^2) 退化陷阱

为什么在工程实践与算法竞赛中,快速排序(Quick Sort) 无需像归并排序那样额外开辟长度为 n 的辅助数组 tmp[],就能以极小的常数因子跑出 O(n log n) 的飞快速度,稳坐“通用原地排序之王”的宝座;可一旦某个同学手写快排时图省事固定挑选区间首元素 a...

五级C++ 算法考级专栏
GESP 编程与算法 · 五级··33 分钟

【GESP/CSP考点精讲】GESP五级 / CSP-J 必背:分治思想与归并排序(Merge Sort)——顺手秒杀“逆序对”统计

当题目给出的数据规模从 n = 1000 跃升到 n = 10^5 时,无论是冒泡排序、直接插入排序,还是用双重 for 循环暴力枚举统计“逆序对”,运算次数都会瞬间飙升至 (n(n-1)/2) ≈ 5 × 10^9 次,在 1 秒时限面前毫无悬念地触发 TLE(运行超...

五级C++ 算法考级专栏
GESP 编程与算法 · 四级··30 分钟

【GESP/CSP考点精讲】GESP四级 / CSP-J 必背:排序的“稳定性”到底有什么用?冒泡、选择、插入排序深度辨析

为什么只给纯整数数组 [5, 3, 5, 2] 排个序,教材和真题却总要喋喋不休地追问“两个 5 排完之后谁在谁前面”?两个一模一样的数字 5 颠倒了顺序,表面上看结果不还是 [2, 3, 5, 5] 吗?然而一旦进入真实教务系统或信奥结构体排序场景——比如教务老师先将...

四级C++ 算法考级专栏
GESP 编程与算法 · 五级··31 分钟

【GESP/CSP考点精讲】GESP五级 / CSP-J 必背:从 O(2^n) 到 O(n) 的奇迹——重叠子问题与记忆化搜索

为什么一段只有 5 行的斐波那契递归代码 return fib(n - 1) + fib(n - 2);,当输入 n = 10 时瞬间出解,一旦输入 n = 45 就会触发超过 22 亿次函数调用,把评测机死死卡在 TLE(运行超时)?更神奇的是,为什么在不改变递归主体...

五级C++ 算法考级专栏
GESP 编程与算法 · 五级··26 分钟

【GESP/CSP考点精讲】GESP四级/五级 / CSP-J 必背:递推 vs 递归——如何手画“递归调用树”秒杀初赛阅读程序题?

为什么在考场上遇到一句看似简单的 return f(n - 1) + f(n - 2);,有些同学在脑子里绕了三层就彻底“死机”,完全算不清函数到底被调用了多少次?为什么仅仅把 cout << n; 放在递归调用语句的前面和后面,打印出来的数字顺序就会发生天翻地覆的“逆...

五级C++ 算法考级专栏
GESP 编程与算法 · 四级··28 分钟

【GESP/CSP考点精讲】GESP四级/五级 / CSP-J 必背:如何根据数据范围 N 反推算法?时间与空间复杂度估算实战

为什么在考场上拿到一道题,有经验的高手还没读完题面,仅仅扫了一眼最下方的“数据范围:对于 100% 的数据,1 ≤ N ≤ 10^5”,就能在 3 秒内断言:“这题绝对不能写双重循环冒泡排序,必须用 O(N log N) 的归并/快排或二分查找”?为什么你的代码逻辑在本...

四级C++ 算法考级专栏
GESP 编程与算法 · 四级··36 分钟

【GESP/CSP考点精讲】GESP四级 / CSP-J 复赛必背:freopen 文件重定向标准写法与考场 0 分爆零避坑指南

为什么每年 CSP-J/S 第二轮复赛成绩公布后,总有一大批平时模拟赛能拿二三百高分的选手,打开成绩单却看到刺眼的 4 题全 0 分(爆零)?为什么你的算法逻辑完美无缺、本地小样例全过,仅仅因为在交卷前忘记删掉 // freopen("apple.in", "r", s...

四级C++ 算法考级专栏
GESP 编程与算法 · 四级··31 分钟

【GESP/CSP考点精讲】GESP四级 / CSP-J 必背:指针到底是什么?为什么 int *p 执行 p+1 地址加了 4 而不是 1?

为什么在 C++ 中定义一个整型指针 int p = &a[0];(假设起始地址为 0x1000),当我们对它执行看似最简单的加法 p = p + 1; 时,指针里存放的内存地址并没有变成 0x1001,而是直接跳到了 0x1004?更让人不可思议的是,如果另一个指针...

四级C++ 算法考级专栏
GESP 编程与算法 · 四级··29 分钟

【GESP/CSP考点精讲】GESP四级 / CSP-J 必背:二维数组的“行优先”线性存储原理与初赛内存地址秒算公式

为什么我们在纸上画二维数组 int a[3][4]; 时,它明明是一张 3 行 4 列的二维网格表,但在计算机物理内存(RAM)中,它却被压扁成了一条头尾相接的一维直线?更让人困惑的是,为什么在声明或传参二维数组时,C++ 编译器允许省略第一维行数(如 int a[][...

四级C++ 算法考级专栏
GESP 编程与算法 · 三级··26 分钟

【GESP/CSP考点精讲】GESP三级 / CSP-J 必背:数组下标为什么从 0 开始?揭秘连续内存寻址与越界篡改黑洞

为什么在 C++ 语言中声明一个长度为 10 的一维数组 int a[10];,合法的下标范围却是 a[0] 到 a[9],一旦访问 a[10] 就会引发难以排查的 Bug?更让人百思不得其解的是,为什么当我们在代码中不小心写出 a[10] = 999; 甚至 a[-1...

三级C++ 算法考级专栏
GESP 编程与算法 · 四级··26 分钟

【GESP/CSP考点精讲】GESP四级 / CSP-J 必背:为什么大数组写在 main 里会爆栈 RE,写在外面却全 0 且安全?

为什么在复赛考场上写出一行 int a[2000005];,如果把它放在 main() 函数内部,程序刚一运行就会直接崩溃报错 Segmentation fault(段错误 / 爆栈 RE),而只要把它挪到 main() 函数外部,不仅瞬间转危为安,而且连 memset...

四级C++ 算法考级专栏
GESP 编程与算法 · 三级··22 分钟

【GESP/CSP考点精讲】GESP三级 / CSP-J 必背:左右移位陷阱与 n&(n-1)、n&(-n) 两大位运算魔法

为什么在 C++ 中计算整数除法 -5 / 2 得到的结果是 -2,而将 -5 右移一位 -5 1 算出来的却是 -3?为什么在统计一个大整数的二进制表示中有多少个 1、或者判断一个数是不是 2 的正整数次幂时,高手从来不用 while (n 0) { cnt += n...

三级C++ 算法考级专栏
CSP / NOIP 信奥竞赛 · CSP-J··15 分钟

【CSP真题】CSP-J 2026 纸牌游戏 luogu-P17830 | 适用于 GESP六级 / 七级 练习

CSP-J 2026 第二轮入门组压轴第四题《纸牌游戏》(luogu-P17830),要求对全部 n 个后缀游戏局分别模拟“遇到相同点数则收走该牌及其右侧所有牌”的过程,并统计每种点数最终留在桌面上的局数。本题是一道极具思维美感的不变量洞察 + 线性状态递推(DP)好题...

⌘ CSP-JCSP-J 入门级题解
CSP / NOIP 信奥竞赛 · CSP-J··11 分钟

【CSP真题】CSP-J 2026 按位与 luogu-P17829 | 适用于 GESP五级 / 六级 练习

CSP-J 2026 第二轮入门组第三题《按位与》(luogu-P17829),要求从 n 个非负整数中选出恰好 m 个数,使它们的二进制按位与(&)结果最大。本题是经典的二进制按位从高到低贪心试填模型,思路清晰、代码极其精炼,适合 GESP 五级与六级考生练习,难度...

⌘ CSP-JCSP-J 入门级题解
CSP / NOIP 信奥竞赛 · CSP-J··12 分钟

【CSP真题】CSP-J 2026 回文串 luogu-P17828 | 适用于 GESP四级 / 五级 练习

CSP-J 2026 第二轮入门组第二题《回文串》(luogu-P17828),给出由 n 段连续相同字符组成的超长字符串(总长可达 2× 10^14),要求计算将其修改为回文串所需的最少字符修改次数。本题核心考查游程编码(RLE)压缩表示下的双指针同步消去技巧,适合...

⌘ CSP-JCSP-J 入门级题解