快速开始
这一页的终点是:你能自己交一道题并且看懂结果。
注册
打开 https://oj.hanzel.top/,用邮箱注册。
注册后立刻去个人资料里把昵称改掉。默认的随机名在排行榜、题单进度、提交记录里都会显示,等练了半个月再改名,你的历史记录就散了。
Warning
一个邮箱只能注册一个账号。不要开小号。 训练统计按账号聚合,开小号只会让你自己的进度分裂成两份,最后谁也算不清你到底练了多少。
交你的第一道题
- 进「题库」,找一道标着「入门」的题。
- 语言选 C++17 或 C++20,看题目要求。
- 代码贴进去,点「提交」。
- 页面会跳到提交记录,盯着状态变化。
一段能跑的最小骨架:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
return 0;
}
新手会在这里栽的第一个跟头
不要在输出里加提示语。
printf("请输入两个数:"); // 错,这行会被当成答案
本地运行时你看到「请输入两个数:3 5」,觉得一切正常。评测机看到的答案是 请输入两个数:8,而标准答案是 8,直接 WA。而且你对着自己的屏幕怎么看都看不出问题,因为你看到的和它看到的不是同一个东西。
这条坑每年都有人踩。记住:标准输入输出里只有数据,没有人话。
看懂评测结果
| 状态 | 含义 | 你该做什么 |
|---|---|---|
| Accepted | 通过 | 下一题 |
| Wrong Answer | 答案错误 | 看错在哪个测试点,比对输出差异 |
| Time Limit Exceeded | 超时 | 算复杂度,别急着改常数 |
| Memory Limit Exceeded | 超内存 | 检查数组大小和递归深度 |
| Runtime Error | 运行时错误 | 数组越界 / 除零 / 爆栈,开 sanitizer 抓 |
| Compile Error | 编译失败 | 看编译器原话,别猜 |
| Waiting / Judging | 排队 / 评测中 | 等,别重复提交 |
Info
不要用重复提交来"试试看"。 评测机是排队串行的,你的每一次无意义提交都在占用别人的时间。同代码连交三次,结果不会变,只会让队列更长。
点开一条提交记录能看到什么
- 每个测试点的耗时、内存
- 挂掉那个点的输入 / 标准输出 / 你的输出三方对比
- 编译器的完整报错
这是你最重要的调试工具,比问任何人都快。养成习惯:出错第一件事是点进去看,不是发消息问。
Warning
部分题目会隐藏测试点数据,只显示「Wrong Answer on test 5」。这是出题人故意设的,防止有人针对数据打表。这种情况下你只能靠自己的构造能力去找反例。
下一步
会交题只是入场。去读题单与训练,那里讲怎么练才有效。