洛谷模板题题解规范

站务版

一扶苏一 @ 2025-02-25 16:15:15

经管理组讨论通过,《洛谷模板题题解规范》自公布日起实施。

洛谷模板题题解规范

前言

模板题作为题库中一类具有特殊性质的题目,相较于普通题目,其教学与指导意义更为显著。这类题目往往成为用户学习相关算法与知识的核心参考资料。鉴于此,本文特制定针对模板题题解的进一步规范,旨在更有效地满足用户的学习需求。

模板题的定义

在主题库、入门与面试题库中名称以【模板】开头的题目。

基本规范

  • 文章必须满足洛谷主题库题解规范。
  • 文章必须至少包含如下三部分内容:算法介绍、正确性证明、代码实现。这三部分必须通过标题加以区分,书写于不同的章节中。
  • 文章可以包含部分需要使用相应算法解决的相关例题,但是不宜对例题解法做篇幅过大的阐述(可以使用一两句话简单描述解法)。
  • 文章主体部分应由作者自行完成,不得抄袭。对引用参考资料的部分,应正确标注引用,给出资料来源。

算法介绍

这部分是对算法本身的介绍,需要包括算法主要用于解决什么问题、算法流程等内容。

对于数据结构类(广义,包括图论、字符串等)模板题,最好添加部分图片来示意数据结构在运行中的变化。

对于数学算法类模板题,需要做好相关概念和函数、变量的定义,给出前置知识的简介或学习链接。

这一部分内容应该主要基于算法的具体运行流程,不要涉及过多的抽象化、形式化内容,以简明易懂为目标。

正确性证明

这部分是对算法更深层次的介绍。首先应该证明算法本身的正确性,并证明算法的时间复杂度。如果相关算法有更深刻的本质,或更抽象、更形式化的描述,也可以在这一部分说明。

  • 如果算法本身正确性和复杂度比较显然,这一部分可以略过。
  • 如果这部分证明需要一些远超算法本身难度的过于复杂的内容(比如并查集关于反阿克曼函数复杂度的证明),可以略去证明。

代码实现

这部分应该有文字介绍上文的模板如何应用到模板题上,并给出可以通过模板题的代码。

原则上,鼓励模块化清晰、接口明确的代码。鼓励把相关算法实现成接口明确的函数/类,不鼓励采用面向过程的方法把所有内容都塞在主函数中。

如果相关算法/数据结构在某语言的官方库中(如 C++ 的 STL)中有实现,也应该给出自行实现的算法代码。在此基础上,可以另外给出一份使用官方标准库实现的代码。

注:这里指的是算法本身不应该直接调库。对于算法内部的一些辅助数据结构可以不加说明的直接调库。 例如,堆的模板题应该给出具体实现,而不应该只使用 std::priority_queue;但后缀自动机的模板题里可以直接使用 std::unordered_map 而无需手动实现一个。

代码必须清晰易读,使用合适美观的换行和缩进。但不要求必须是 C++ 语言实现的。


by sea_bird @ 2025-02-27 13:35:27

@cff_0102 那要是采药这种模板的呢?是不算吗?


by cff_0102 @ 2025-02-27 13:36:37

@sea_bird 不算


by sea_bird @ 2025-02-27 13:39:14

@cff_0102 谢谢


by lofing @ 2025-02-27 14:00:25

qp


by zjr2014 @ 2025-02-27 14:03:09

qp


by SalN @ 2025-02-27 14:35:09

后排,锁前留名 /kel/kel


by 违规用户名920406 @ 2025-02-27 15:47:54

整体二分,又名敬业王二分,是兢兢业业敬业王发明的一个离线算法,通过对于每个询问一起二分的方式获得AC。它的缺点显著,所以zzs同学对敬业王二分做出了改进。他将一起二分改成了对每个询问挨个二分求解,成功获得3AC,7TLE。敬业王好闪,拜谢敬业王!!!zzs好闪,拜谢zzs!!!


by 违规用户名920406 @ 2025-02-27 15:48:48

还不赖!还不错!还可以!


by 违规用户名920406 @ 2025-02-27 15:50:55

看到的人是古希腊里掌管古希腊里掌管古希腊里掌管奶龙的神的神的神。


by 违规用户名920406 @ 2025-02-27 16:25:25

@一扶苏一 大神,at392~394的难度一直没评了喵,拜谢


上一页 | 下一页