CPH 太难用了,于是我做了这个……
langningchen · · 科技·工程
CPH-NG:下一代竞赛编程助手
CPH-NG 主界面展示 - 现代化的竞赛编程环境
专为竞赛编程优化的 VSCode 扩展,让你的编程效率显著提升
智能测试数据管理 | 21 种精细评测状态 | Special Judge支持 | 自动化对拍
为什么选择 CPH-NG?
传统 CPH(Competitive Programming Helper)虽然为竞赛编程提供了基础支持,但在实际使用中仍存在诸多痛点:
- 批量测试数据管理功能不足 - 无法高效处理大量测试用例
- 评测状态信息有限 - 难以精确定位问题类型和错误原因
- 不支持 Special Judge(SPJ) - 无法处理多解问题和特殊评测需求
- 缺乏智能编译缓存 - 重复编译效率低下,浪费开发时间
- 配置选项相对固定 - 个性化程度有限,难以适应不同使用场景
- 界面功能冗余 - 在线人数、捐赠广告等功能影响专注度
CPH-NG 的创新解决方案
作为专为竞赛编程优化的新一代工具,CPH-NG 在保持原有功能的基础上,引入了大量创新特性和灵活的配置选项。
:::warning[重要提示] CPH-NG 目前专注支持 C/C++ 语言程序,为竞赛编程提供最优化的体验 :::
核心功能特性
智能测试数据管理
多种测试数据导入方式 - 让数据管理变得简单高效
CPH-NG 提供多种灵活的测试数据导入方式:
- 压缩包解析:支持从
.zip格式测试数据包的自动解压和匹配 - 目录批量导入:自动识别和配对输入输出文件
- Competitive Companion 浏览器插件:在浏览器中一键点击即可导入
- 智能文件匹配:手动选择输入文件时自动匹配同目录下的输出文件
- 对拍导入:在运行对拍时自动导入对拍出错的数据
- 内联数据导入:识别 C++ 文件中的特殊数据格式,便于分享测试样例
- 手工输入:支持直接在界面输入测试数据
智能编译系统
CPH-NG 的智能编译系统为所有 C++ 源代码提供编译优化:
- 哈希值检测:自动计算文件哈希值,判断文件是否发生变化
- 智能缓存:根据变化情况决定是否需要重新编译
- 手动控制:按住
Ctrl强制重新编译,或按Alt跳过编译 - 多文件支持:题目代码、SPJ 代码等所有 C++ 文件均享受优化
精细化评测状态系统
21 种评测状态 - 精确定位问题所在
CPH-NG 实现了完整的 21 种评测状态,提供精确的程序问题诊断。相比传统 CPH 的基础状态,CPH-NG 提供了 7 倍的状态精度,帮助您快速定位代码问题。
Special Judge 支持
完整的 testlib框架支持 - 处理多解问题
完整支持基于 testlib 框架的 Special Judge 功能:
- 多解问题处理:完美支持排列组合、构造类题目的多种正确答案
- 浮点精度控制:精确处理几何计算、数值分析中的浮点数比较
- 交互式评测:支持需要程序与评测器交互的特殊题目类型
智能输出
支持彩色输出和长输出自动放置文件
- 彩色输出:可以通过 ANSI 转义序列实现彩色输出,提升调试信息的可读性
- 长输出自动放置文件:对于过长的输出,自动放置在文件中
自动化对拍功能
自动化对拍 - 让程序正确性验证变得简单
提供完整的程序正确性验证流程:
- 数据生成器集成:支持自定义随机数据生成程序
- 标准程序对比:与暴力解法或标准实现自动对比
- 错误用例捕获:自动保存导致程序错误的测试数据
- 批量验证:大规模随机数据验证程序正确性
灵活的配置系统
丰富的配置选项 - 适应不同使用场景
CPH-NG 提供丰富的配置选项以适应不同使用场景:
- 编译器配置:自定义编译器路径、编译选项和优化参数
- 运行策略调整:配置运行缓冲时限和性能监控选项
- 运行结果比较方法:自定义 OLE 的长度、PE 的空格和换行符处理等
- 界面个性化:支持多语言切换、亮暗色主题显示
数据持久化
完整的工作状态保存:
- 测试用例缓存:所有测试数据和结果持久化存储
- 会话恢复:重新打开文件时自动恢复所有测试状态
- 项目级管理:每个源文件独立维护其测试环境
CPH-NG 技术优势
功能对比分析
| 技术特性 | 传统 CPH | CPH-NG | 技术改进 |
|---|---|---|---|
| 评测状态精度 | 基础状态识别 | 21 种专业状态 | 7 倍精度提升,精确问题定位 |
| SPJ 支持 | 不支持 | 完整 testlib 支持 | 支持多解问题和交互式评测 |
| 性能监控 | 基础时间显示 | 毫秒级精确计时 | 详细性能分析和瓶颈识别 |
| 数据管理 | 手动管理 | 智能批量导入 | 10 倍以上效率提升 |
| 编译优化 | 每次重新编译 | 哈希缓存机制 | 90% 编译时间节省 |
| 自动化测试 | 不支持 | 完整对拍功能 | 自动化正确性验证 |
| 配置灵活性 | 基本固定配置 | 丰富配置选项 | 适应多种使用场景 |
| 数据持久化 | 不保存状态 | 完整状态保存 | 工作状态无缝恢复 |
快速开始
安装方法
- 一键安装:点击链接自动打开 VSCode 安装
- 扩展市场:在 VSCode 扩展市场搜索
CPH NG - 离线安装:从 GitHub Actions 下载 .vsix 文件手动安装
- 源码构建:从 GitHub 仓库克隆源码进行开发构建
基础使用流程
- 创建问题:在 C/C++ 文件中使用
Ctrl+Alt+B快捷键创建题目 - 导入测试数据:通过界面添加单个用例或批量导入数据包
- 运行测试:使用
Ctrl+Alt+B运行测试或停止执行 - 分析结果:查看详细的评测状态、运行时间和错误信息
高级功能配置
高级功能配置 - 释放 CPH-NG 的全部潜力
- SPJ 设置:在问题配置中指定 Special Judge 程序路径
- 对拍配置:设置数据生成器和标准程序进行自动化验证
- 编译器配置:自定义 C/C++ 编译器参数和优化选项
- 界面定制:配置语言、主题和状态显示选项
项目信息与社区
项目状态
- GitHub 仓库:langningchen/cph-ng
- 版本状态:正式发布版本,持续迭代更新
- 维护状态:活跃开发,定期功能增强
- 技术支持:GitHub Issues 问题追踪系统
参与贡献
- 问题反馈:GitHub Issues - 提交技术问题和功能建议
- 社区讨论:GitHub Discussions - 技术讨论和经验分享
- 代码贡献:欢迎提交 Pull Request 参与项目开发
项目愿景
CPH-NG 致力于为竞赛编程提供专业、高效的开发工具。通过持续的技术创新和社区协作,我们不断提升竞赛编程的开发体验和效率,让每一位竞赛编程爱好者都能专注于算法本身,而不是工具的限制。
立即开始使用 CPH-NG,体验专业的竞赛编程开发环境