Skip to content

Repository files navigation

XDOblivionisJudgement banner

XDOblivionisJudgement

💻 由 零音LyCecilion 完成的高质量 XDOJ 题解 🔧

Typing SVG

Warning

该项目代码由 LyCecilion 独立或在 AI 辅助下完成。题解仅作为可能的参考方案,而非 XDOJ 的官方标准。强烈建议将题解仅用于思路启发,请勿在未经思考的情况下直接搬运,以免影响学习效果。本项目不对因不当使用代码而产生的后果负责。

样例通过只表示本地可见输入输出一致,不等于 XDOJ 的隐藏测试一定通过。资源测量同理。

GitHub commit activity GitHub last commit GitHub Actions Workflow Status GitHub Issues GitHub Pull Requests GitHub License GitHub Repo stars

📖 简介

零音将自己在 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/time

Linux 下的内存检查还需要 valgrindbenchmemcheck 是 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.out

📋 使用

just 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 ms128 MiB,输出比较模式为 exact(逐字节严格比较)。如果题目允许忽略行尾空白差异,把题目的 compare 改成 trim-trailing

🤝 贡献

如果有更好的写法或者想补充新题目的题解,欢迎发送 Pull Request。

📄 许可证

MIT LICENSE

顶部 Banner 作品版权归属艺术家 和武はざの(Hazano Kazutake)
LyCecilion 仅出于学习与欣赏目的使用,如有侵权,请联系 LyCecilion 删除。

About

[🛠️|🌌] LyCecilion 完成的 XDOJ 题解

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages