Warning
该项目代码由 LyCecilion 独立或在 AI 辅助下完成。题解仅作为可能的参考方案,而非 XDOJ 的官方标准。强烈建议将题解仅用于思路启发,请勿在未经思考的情况下直接搬运,以免影响学习效果。本项目不对因不当使用代码而产生的后果负责。
样例通过只表示本地可见输入输出一致,不等于 XDOJ 的隐藏测试一定通过。资源测量同理。
零音将自己在 XDOJ 上完成题目的题解开源在该 Repo,主要是留作自己做题的记录,同时也供其他同学参考。零音尽可能将代码完成得足够规范、完善、简介、优雅和 robust,并确保每个解答均通过了 XDOJ 的评测且经过 AI 的审核。
目前该 Repo 共含有 17 道题目的题解。每题一个目录,目录中含有题解源码、题目描述、样例数据和思路记录。
- 完全自动的项目运行: 零音编写本地 OJ 脚本,同时使用
just进行一站式评测、优化、诊断、测试、样式检查等。 - 极致规范的代码风格: 零音遵循 CONVENTIONS.md 编写所有代码,确保题解具有一致的代码规范。
- 简洁高效的逻辑实现: 零音尽可能将题目的算法编写得足够简洁高效、逻辑清晰。
| ID | 标题 | 题解 | 难度 | 语言 |
|---|---|---|---|---|
| 4 | 命令行选项 | main.cpp | ★★★★☆ | C++ |
| 72 | 寻找最长的行 | main.cpp | ★★☆☆☆ | C++ |
| 73 | 字符串压缩 | main.cpp | ★★★☆☆ | C++ |
| 74 | 括号匹配 | main.cpp | ★★★★☆ | C++ |
| 108 | 拼数字 | main.cpp | ★★★☆☆ | C++ |
| 134 | 数字分解排序 | main.cpp | ★★★☆☆ | C++ |
| 173 | 购票系统 | main.cpp | ★★★★★ | C++ |
| 175 | - | main.cpp | - | C++ |
| 242 | 成绩统计 | main.cpp | ★☆☆☆☆ | C++ |
| 243 | 考试排名 | main.cpp | ★☆☆☆☆ | C++ |
| 246 | 单词统计 | main.c | ★☆☆☆☆ | C |
| 251 | 年月日统计 | main.cpp | ★☆☆☆☆ | C++ |
| 465 | 排球比赛 | main.cpp | ★★★☆☆ | C++ |
| 469 | 输入联想 | main.c | ★☆☆☆☆ | C |
| 487 | 分段统计学生成绩 | main.cpp | ★★☆☆☆ | C++ |
| 493 | 找出总分最高的学生 | main.cpp | ★★★☆☆ | C++ |
| 560 | 子串定位 | main.cpp | ★★☆☆☆ | C++ |
运行 just sync-list 可自动重新生成上表。
Nix 用户可以直接进入开发环境:
nix develop非 Nix 用户需要自己安装这些命令:
bash just gcc g++ clang-format clang-tidy diff find awk timeout /usr/bin/timeLinux 下的内存检查还需要 valgrind。bench 和 memcheck 是 Linux-only。
oj.defaults.toml # 全局默认语言、时间限制、内存限制
template.c
template.cpp
tools/oj # 实际命令逻辑
justfile # 用户入口
problems/<id>/
problem.toml # 元数据:语言、时限、内存限制、难度等
main.c | main.cpp # 题解源码
README.md # 题目描述
NOTES.md # 解题思路(可选)
samples/
1.in / 1.outjust list # 列出所有题目
just add 200 # 新建 C++ 题目
just add-c 201 # 新建 C 题目
just build 473 # 编译(默认 debug 模式)
just run 473 # 编译并交互运行
just test 473 # 编译并用样例测试
just check 473 # 编译 + 测试 + 静态分析
just bench 473 # 性能测量(release 模式)
just memcheck 473 # Valgrind 内存检查
just fmt # 格式化所有代码
just tidy 473 # clang-tidy 静态分析
just commit 473 # 提交题目(自动检测新增/修改)
just sync-list # 更新 README 题目列表和计数
just clean # 清理构建产物构建模式:
debug:默认模式,开启 address, undefined sanitizer 和较强警告,适合样例测试。release:-O2,接近 OJ 提交环境,供运行时间和内存测量使用。memcheck:带调试信息但不启用 sanitizer,供 Valgrind 使用。
problem.toml 最小内容如下:
id = 473
language = "c"
source = "main.c"
title = "示例题目"
difficulty = 3如果题面给了限制,可以在对应题目里覆盖默认值:
time_limit_ms = 1000
memory_limit_mb = 64
memory_limit_kb = 256 # 小于 1MB 时直接用 KB,比如 256KB
compare = "exact"没有写时使用 oj.defaults.toml。当前默认值是 1000 ms、128 MiB,输出比较模式为 exact(逐字节严格比较)。如果题目允许忽略行尾空白差异,把题目的 compare 改成 trim-trailing。
如果有更好的写法或者想补充新题目的题解,欢迎发送 Pull Request。
顶部 Banner 作品版权归属艺术家 和武はざの(Hazano Kazutake)。
LyCecilion 仅出于学习与欣赏目的使用,如有侵权,请联系 LyCecilion 删除。
