C++上机考试冲刺(六)—设计题、业务模拟与三题实战
设计题和业务模拟题不一定需要高级算法。它们更常考查四项能力:把自然语言规则转换为状态、为每个操作选择数据结构、维持不变量,以及在边界输入下给出确定结果。 这类题代码通常较长。最危险的做法是一边读题一边堆叠 if,直到多个状态互相矛盾。本篇先给出可复用的建模流程,再实现一个预约系统,最后用三道题完成整套系列的模拟。 一、业务模拟题的六步建模法1. 列出实体和唯一标识先回答:系统中有哪些对象,如何唯一找到它们? 例如预约系统包含房间和预约: 房间由 roomId 唯一标识; 一条预约包含开始时间、结束时间和预约人; 同一房间的预约按开始时间排序。 2. 写出状态,而不是先写操作根据查询方式选择状态结构: 1234roomId└── 按 start 排序的预约集合 ├── [start, end) -> owner └── [start, end) -> owner 外层按编号快速定位房间,可以使用哈希表;内层需要寻找相邻时间段,可以使用有序映射。 3. 明确定义不变量不变量是在每次合法操作后都必须成立的条件: 每条预约满足 start <...
C++上机考试冲刺(五)—双指针、滑动窗口与高频组合模式
双指针、滑动窗口、前缀和、哈希计数和单调结构不是互相孤立的模板。它们都在利用问题中的某种结构,避免反复计算同一段数据。 本篇重点不是背代码,而是建立选择顺序:题目要求处理连续区间时,先判断窗口能否增量维护;数组已经有序时,考虑相向双指针;需要大量区间和查询时,先做前缀预处理;窗口条件依赖元素种类时,用哈希表维护计数。 一、模式选择表 题目特征 优先考虑 核心状态 有序数组中寻找一对元素 相向双指针 left、right 及当前和 原地删除或压缩数组 同向双指针 读指针与写指针 固定长度连续区间 固定滑动窗口 当前窗口的和、计数或最值 最长/最短合法连续区间 可变滑动窗口 左右边界和维持合法性的状态 多次查询静态区间和 前缀和 prefix[i] 表示前 i...
C++上机考试冲刺(四)—排序、查找与二分模板
排序不只是把数据从小到大排列。它经常把一个无序问题转换为能够二分、双指针或分组扫描的问题。查找同样不只是调用 std::find():数据是否有序、是否需要边界、答案是否具有单调性,会决定应该使用线性查找、标准二分算法还是“对答案二分”。 本篇先整理 C++17 的排序与查找接口,再用一个处理能力规划问题贯穿答案二分的完整过程。 一、排序前先明确目标顺序1. 基本排序123456#include <algorithm>#include <functional>#include <vector>std::sort(values.begin(), values.end());std::sort(values.begin(), values.end(), std::greater<int>{}); std::sort() 要求随机访问迭代器,因此适用于 std::vector、std::array 和 std::deque,不能直接用于 std::list。对 n 个元素排序通常需要 O(n log n)...
C++上机考试冲刺(三)—STL容器与常用数据结构
上机考试很少要求重新实现一整套通用容器。真正需要掌握的是:根据操作选择合适的数据结构,记住高频接口和复杂度,并避免在遍历过程中误用已经失效的迭代器。 本文采用 STL 优先策略。数组、栈、队列、优先队列、集合和哈希表直接使用标准库;链表只保留在线评测平台常见的节点操作。 一、先根据操作选择容器 主要需求 优先选择 关键复杂度与限制 动态连续数组、按下标访问 std::vector 下标 O(1),尾部追加均摊 O(1),中间插入/删除 O(n) 固定长度连续数组 std::array<T, N> 长度在编译期确定,按下标访问 O(1) 两端频繁插入和删除 std::deque 两端操作 O(1),支持随机访问,但内存不保证整体连续 已知位置的频繁插入/删除 std::list 已有迭代器时插入/删除 O(1),不支持随机访问,查找位置仍为 O(n) 后进先出 std::stack push()、pop()、top() 通常为 O(1) 先进先出 std::queue push()、pop()、front()...
C++上机考试冲刺(二)—字符串、进制、位运算与字节流
字符串、进制、位运算和字节流经常出现在协议解析、日志处理、状态字段和业务模拟题中。它们表面上是不同主题,实际都围绕同一条数据流:文本如何转换为数值,数值如何按位解释,字节如何按协议组合成字段。 本篇以 C++17 为基线,完成一段十六进制报文的解析,并整理这些场景中最容易写错的边界。 一、std::string 必记操作std::string 保存连续的字符序列,可以通过下标、迭代器和标准算法处理。 目的 写法 注意事项 长度 text.size() 返回 std::size_t 判空 text.empty() 比 text.size() == 0 更直接 读取字符 text[index] 不检查越界 带检查访问 text.at(index) 越界会抛出 std::out_of_range 截取 text.substr(pos, count) count 超出剩余长度时会截到末尾;pos > size() 会抛异常 查找 text.find(target) 未找到时返回 std::string::npos 追加 text +=...
C++上机考试冲刺(一)—C++17基础与输入输出
这组文章面向三题制的 C++ 上机考试,目标不是重新学习完整的 C++ 语言,而是在一周内恢复“读题后能够迅速写出、编译并调通程序”的能力。正文统一使用 C++17、标准头文件和显式 std:: 前缀;C++20 语法只放在可选补充中,不作为考场模板的依赖。 系列共六篇: C++17 基础与输入输出; 字符串、进制、位运算与字节流; STL 容器与常用数据结构; 排序、查找与二分模板; 双指针、滑动窗口与高频组合模式; 设计题、业务模拟与三题实战。 本篇先解决最基础、也最容易造成无谓失分的问题:程序骨架、类型选择、函数参数、输入解析、输出格式和边界处理。 一、考场程序的基本结构完整程序至少包含头文件、辅助函数和 main()。建议把题目的核心逻辑写成独立函数,让 main() 只负责输入、调用和输出。这样既方便本地调试,也能快速迁移到只要求实现函数的 LeetCode 式平台。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// verify:...
WezTerm配置与使用指南—Windows、PowerShell、WSL与多窗格工作流
WezTerm 是一个使用 Rust 编写、支持 GPU 加速和 Lua 配置的跨平台终端模拟器。本文介绍的不是 WezTerm 默认配置,而是基于 KevinSilvester/wezterm-config 调整后的 Windows 配置。它将 PowerShell 7 作为默认 Shell,同时接入 Windows PowerShell、Command Prompt、Git Bash 和 Ubuntu WSL,并提供背景图片、状态栏、标签页状态、多窗格操作以及一套以 Alt 为核心的快捷键。 本文以当前实际安装环境为准: 项目 当前配置 操作系统 Windows WezTerm 20260729-115229-46a166d6 配置来源 KevinSilvester/wezterm-config,提交 052853e 配置目录 C:\Users\li'xiao\.config\wezterm 默认 Shell PowerShell 7 WSL Ubuntu,用户 lixiao,登录 Shell 为 Bash Git...
mattpocock/skills—面向真实工程的AI编程工作流
mattpocock/skills 不是一组“让 AI 把代码写得更漂亮”的提示词,而是一套面向真实软件工程的工作流。它把需求澄清、外部调研、原型验证、规格沉淀、任务拆分、实现、审查和故障诊断连接起来,让一个复杂功能可以跨越多个会话继续推进。 如果是第一次接触这个项目,可以先记住三个答案: 它解决什么问题? 它主要解决 AI 编程中最容易失控的部分:需求没有说清就开始写代码、长对话丢失上下文、任务拆得无法独立验收、实现偏离规格,以及复杂缺陷只能靠猜。 第一次应该安装哪些 Skill? 使用 Claude Code 原生插件时直接安装整个插件即可。真正需要先学会的,是本文重点介绍的 10 个高频入口;grilling、domain-modeling、tdd 和 code-review 会由主流程在内部调用。 面对一个任务应该从哪个 Skill 开始? 第一次在仓库中使用先运行 /setup-matt-pocock-skills;不知道如何选择流程时运行 /ask-matt;如果需求本身还不清楚,通常从 /grill-with-docs 开始,而不是直接...
Claude Code终端使用指南(六)—非交互自动化、成本与故障排查
Claude Code 不只可以作为交互式终端应用,也可以像普通 Unix 工具一样读取标准输入、输出文本或 JSON,并在脚本与 CI 中运行。自动化没有人实时审查权限提示和错误方向,因此需要比交互会话更明确的工具范围、预算、输出协议、超时和隔离。 本文是系列最后一篇,介绍非交互 -p、官方推荐的 --bare、结构化输出、会话续接、模型与 Effort、成本控制,以及安装、配置、MCP、Hooks、搜索和性能问题的系统排查流程。 0. 自动化与排障速查0.1 一次性查询1claude -p "概括这个项目的模块和入口" 推荐的可复现脚本模式: 12claude --bare -p "只读审查当前差异" \ --allowedTools "Read,Grep,Glob,Bash(git diff *),Bash(git status *)" 0.2 JSON 输出123claude --bare -p "列出所有 HTTP 端点" \ --output-format json | jq...
Claude Code终端使用指南(五)—Skills、子代理、Hooks、MCP与插件
Claude Code 内置的读取、搜索、编辑、命令执行和网络工具已经能够完成多数开发任务。扩展机制解决的是更具体的问题:让 Claude 记住按需知识、复用工作流、把调查放进独立上下文、确定性执行检查、连接外部系统,并把这些能力分发给团队。 本文继续使用虚构的 task-board 项目,完成以下扩展: 创建 /fix-issue Skill; 创建只读 security-reviewer 子代理; 配置编辑后格式化和保护迁移文件的 Hooks; 连接 Claude Code 官方文档 MCP; 说明何时使用插件与代码智能插件。 0....




