正在加载
第一次写算法题?新手入门指南带你从输入输出写到第一个 Accepted
正在加载
常见问题与使用说明
如果你是第一次用 LLOJ,按这五步走一遍,大约十分钟。
1. 注册账号。 注册页填用户名、邮箱、密码。 若站点开启了邮箱验证,点「获取验证码」后去邮箱取六位数字填进来。 「接收活动邮件」是可选的,不勾也完全不影响使用(验证码、找回密码这类 邮件不受它影响,一定会发)。
2. 挑一道题。 去题库,把难度筛到「入门」。 题号形如 P1001。不知道选哪道就用首页的「随机一题」。
3. 读题面。 重点看三处: 「输入格式」「输出格式」告诉你程序该怎么读、怎么写; 数据范围决定你能用什么复杂度的算法(n ≤ 10⁵ 和 n ≤ 10⁹ 是两种题); 样例是最省事的自测数据。
4. 写代码并提交。 点题面上的「提交代码」进入提交页, 选语言(C++14 或 Python 3),粘贴代码,提交。 注意程序默认从标准输入读、往标准输出写。若题面顶部显示「文件读写」,则只需按展示的文件名操作:例如读入「example.in」,输出到「example.out」;无需自行猜测扩展名。
5. 看结果。 评测通常几秒完成,测试点会逐个出现。 全绿就是 AC;出现 WA/TLE 之类的先看下面的评测结果对照表。
交错了不会扣任何东西(比赛除外,见下方赛制说明)。多试几次很正常。
去题库挑一道,点进去看题面,再点「提交代码」按钮进入提交界面。 不知道从哪开始的话,首页有「随机一题」,或者按难度筛选「入门」级别的题目。
更完整的入门教程见新手指南。
如果评测机空闲,通常几秒内就有结果。评测过程中每完成两个测试点会推送一次 进度,你能看到结果逐步出现,不用一直刷新。
目前支持 C++14(开启 O2 优化)与 Python 3。 详细的编译参数见下方「评测环境与标准」,或评测规则。
| 语言 | 编译 / 运行方式 |
|---|---|
| C++14 | g++ -std=c++14 -O2 |
| Python 3 | CPython 3 解释执行 |
C++ 开启了 O2 优化,这与多数 OI 赛事一致。 Python 因为是解释执行,同样的算法通常比 C++ 慢一个量级 —— 时间限制卡得紧的题目建议用 C++。
逐个 token 比较,行末空格与文件末尾多余换行都会被忽略 —— 不必为了这些细节反复调整。
如果所有 token 都正确、只是空白字符的排布与期望不同,会判 PE(格式错误) 而不是 WA。看到 PE 就说明算法是对的,只需调整输出格式。
SE(系统错误)不是你的问题,是评测机侧出了状况。 重新提交一次通常就好;如果反复出现,请提交工单告诉我们。
| 缩写 | 含义 | 通常原因 |
|---|---|---|
| AC | 答案正确 | 恭喜 |
| WA | 答案错误 | 算法或边界处理有问题 |
| PE | 格式错误 | 答案对了,但空格/换行不对 |
| TLE | 运行超时 | 算法复杂度太高,或死循环 |
| MLE | 内存超限 | 数组开太大,或有内存泄漏 |
| RE | 运行时错误 | 数组越界、除零、爆栈、非零退出 |
| CE | 编译错误 | 语法错误,或用了不支持的头文件 |
| OLE | 输出超限 | 输出了远超预期的内容,通常是死循环打印 |
| SE | 系统错误 | 评测机的问题,不是你的问题,请联系管理员 |
样例通常只覆盖最简单的情况。检查这几点:
int 数组?PE 意味着你输出的内容完全正确,只是空格或换行的位置和期望不一样。 比如题目要求一行输出三个数,你输出成了三行。检查一下输出格式就好, 不用重想算法。
登录页有「忘记密码」入口,通过注册邮箱重置。 重置链接15 分钟内有效且只能用一次,过期了重新发一封即可。
重置成功后,你在其他设备上的登录状态会被全部退出 —— 这是为了防止账号已经被别人登录着。
账号设置页里有「修改密码」,需要提供当前密码。 改完同样会退出其他设备的登录。
账号设置里关掉「接收活动与公告邮件」即可。 验证码、密码重置这类账号安全邮件不受这个开关影响 —— 否则你退订之后就没法登录或找回账号了。
如果站点开启了图片审核,新头像需要审核通过后才会对其他人可见。 在此期间只有你自己能看到它,并会标注「审核中」。
Rating 是一个综合评分,反映你的做题情况。通过题目会提升评分, 难度越高提升越明显;随着评分升高,增长会逐渐放缓 —— 到了后期,即使做出很难的题也只会增加一点点。
评分保留两位小数,所以即使是很小的进步也能看到变化。
正确率、连续签到、近期活跃度也会影响评分。
选择赛制会直接改变「怎么算分、怎么排名、赛中能不能看到结果」, 参赛前务必确认这场用的是哪种。
| 赛制 | 计分 | 排名 | 赛中看得到结果吗 |
|---|---|---|---|
| ACM | 只看是否通过 | 通过题数 ↓,罚时 ↑ | 能 |
| OI | 按测试点得分,取最后一次提交 | 总分 ↓ | 能 |
| IOI | 按测试点得分,每题取历史最高 | 总分 ↓ | 能 |
| IOI(严格) | 同 IOI | 总分 ↓ | 不能,赛后公布 |
| 乐多 | 只看是否通过,不计罚时 | 通过题数 ↓ | 能 |
ACM — 每题非通过即未通过,没有部分分。排名先比通过题数, 题数相同再比罚时(少者靠前)。罚时 = 每道通过题目的用时之和, 加上该题此前每次失败提交各计 20 分钟。没通过的题不计罚时, 所以不确定的题目大胆交没有代价。
OI — 按通过的测试点比例给分。⚠️ 成绩取最后一次提交: 交了一份更差的代码会把之前的好成绩覆盖掉。这与 NOIP 等国内赛事一致, 交题前请确认新代码确实更好。
IOI — 同样按测试点给分,但每题取你在该题上的历史最高分, 交错不会拉低已有成绩,可以放心尝试。
IOI(严格) — 计分规则与 IOI 完全相同,唯一区别是 赛中看不到自己的评测结果与排名,提交后只显示「已提交」, 成绩在比赛结束后统一公布。更接近正式考试,考察的是自己判断代码正确性的能力。
乐多 — 只看做出几题,交错完全不受惩罚。 题数相同则比最后一次通过的时间。适合训练赛与新手赛 —— ACM 的罚时机制会让新手不敢提交,与训练的目的相反。
比赛页面会列出所有开放报名的比赛。点进去报名即可, 部分比赛需要参赛密码,向主办方索取。
主办方可以限定这场比赛只能用某一门语言(比如只允许 C++14)。 限制在服务端强制执行,提交时会直接告诉你允许哪些语言。 比赛详情页会写明限制,报名前可以先确认。
部分考试会要求全屏作答。进入后如果退出全屏(按 F11、Esc 等), 系统会记录次数并反馈给监考人员。是否开启这个功能由主办方决定。
创办比赛需要管理员授予「监考人」资格,包含可创办的场次数量与有效期。 如有需要请通过工单申请。
提交记录(哪道题、什么结果、什么时候)会永久保留。 代码正文默认保留 30 天后自动清除 —— 之后你仍能看到这条提交记录, 但代码内容会显示「已过期」。
详见隐私政策。
这是一项 Beta 功能:别的网站可以请用户「用 LLOJ 登录」, 同意之后,对方拿到的是你的头像、用户名、昵称、UID、称号、学校、简介和邮箱。 不会拿到密码。
对方会把你带到本站的授权页。页面上能看到项目名称和 logo, 以及将要读取的资料。点「同意并登录」才会回去;点「拒绝」则不会提供任何资料。 授权地址形如:
/connect/identity/oauth/authorize?client_id=站点代码&redirect_uri=回调地址&scope=profile%20email&state=随机字符串
登录后打开登录接入。
client_id 用站点代码,redirect_uri 必须和项目里登记的回调地址完全一致
(含协议、主机、路径和查询串)。state 请用随机字符串,回来时原样核对,防止被别人伪造回调。code。
由你的服务器(不要放进浏览器)请求:POST /api/v1/connect/identity/oauth/token
Content-Type: application/json
{
"grant_type": "authorization_code",
"code": "授权码",
"client_id": "站点代码",
"client_secret": "私钥",
"redirect_uri": "与授权时完全相同的回调地址"
}
成功时返回 access_token、token_type(Bearer)和 expires_in(秒)。
授权码大约 5 分钟内有效,并且只能使用一次。
7. 读取用户资料。
GET /api/v1/connect/identity/oauth/userinfo
Authorization: Bearer 访问令牌
返回里包含 uid、username、nickname、avatar_url、profile_url、
bio、school、title、rating、solved_count。申请了 email 范围时还会有 email。
回调地址使用 https。本机调试可以使用 http://localhost 或 http://127.0.0.1。
每个项目最多登记 5 个回调地址,也可以随时关掉「允许别人通过这个项目登录」。
站内工单是最直接的联系方式,也可以发邮件到 hello@lloj.dev。