Skip to content

Latest commit

 

History

History
374 lines (227 loc) · 25 KB

2-开始刷题.md

File metadata and controls

374 lines (227 loc) · 25 KB

Part 2.开始刷题

目标:

  • 进入题目列表
  • 尝试查找题目。
  • 学会阅读题目页面
  • 使用 在线 $\textbf{IDE}$ 编辑一次代码。
  • 提交一次题目。
  • 学会阅读评测记录
  • 使用提交记录查找你过去的提交。
  • 使用个人设置设定自己的做题隐私。
  • 使用题解功能学习好的解法。

回到主页(如图 $3$),点击左侧边栏中的 题库 (如图 $7$)。

$$\color{gray}\scriptsize\text{图 7 . 左侧边栏}$$

接下来,你会进入题目列表(如图 $8$)。

$$\color{gray}\scriptsize\text{图 8 . 题目列表}$$

取出其中两行,详细说一下(如图 $9$)。

$$\color{gray}\scriptsize\text{图 9 . 题目列表中的两行}$$

  • 最左边的一列是当前这道题的状态
    • 如果你通过($\text{AC}$)了这道题,则这一栏会显示绿色的对勾。(例如图中的 $\text{P1002}$
    • 如果你提交过但没有通过这道题($\text{Unaccepted}$),则这一栏会显示红色的叉。
    • 如果你没有提交过这道题,则这一栏会显示黑色的横杠。(例如图中的 $\text{P1003}$
    • 以上列表是我的账号目前的,但由于你刚注册,此时应该没有通过过任意一道题,所以所有题目的第一栏都会是横杠。
  • 第二列显示的是题号。洛谷主题库的题目题号全部有前缀 $\texttt{P}$,后面紧跟四位数字的题号,题号自 $1000$ 开始。此外,洛谷还有一些其它在线评测网站的题目,例如 $\text{CodeForces(CF)}$,$\text{SPOJ(SP)}$,$\text{UVaOJ(UVA)}$,$\text{AtCoder(AT)}$,它们的题目编号前缀是括号里所示的两位或三位字母,后面的部分则与它们本站的编号一致。
  • 第三列显示的是题目名称。点击题目名称可以进入相应的题目。
  • 第四列是该题目的标签。洛谷使用标签对题目进行分类。标签可以是算法标签(红色)或者来源标签(蓝色)。现在这列显示的是来源标签,即意味着 $\text{P1002}$ 属于 $2002$ 年的 $\text{NOIP}$ 普及组。如果你想显示来源标签,请点击这一列上方的 显示来源
  • 第五列是题目难度。洛谷大部分题目都按照难度分好了类,不同的难度用不同的颜色表示,以示区分。以下是目前的难度分类。$\text{OIer}$ 口中的 红题橙题 等即出自这里,例如 红题 表示入门难度的题。
    • 红色:入门
    • 橙色:普及$-$
    • 黄色:普及/提高$-$
    • 绿色:普及$+$/提高
    • 蓝色:提高$+$/省选$-$
    • 紫色:省选/$\text{NOI-}$
    • 黑色:$\text{NOI/NOI+/CTSC}$
  • 最后一列用图表的方式反映了这道题目的 $\textbf{AC}$ 。其中整个图表的长度代表这道题目总的提交次数,而蓝色部分的长度则代表这些提交中通过的个数。

洛谷的题目非常多(主题库就有近 $7000$ 道)。一页显然是无法显示下全部的,所以若你要查看更多的题目,请在整个题目列表的最下方找到翻页按钮区域(图 $22$)。

$$\color{gray}\scriptsize\text{图 22 . 翻页按钮区域}$$

在这一排按钮中,蓝色按钮代表了当前页的编号。你可以进行如下操作。

  • 点击非蓝色的数字按钮,可以跳到相应编号的页。
  • 点击最左边的按钮,可以跳到第 $1$ 页。
  • 点击从左到右第二个按钮,可以跳到当前页的前一页。(如果当前已经是第 $1$ 页那么此按钮无效)
  • 点击从右到左第二个按钮,可以跳到当前页的后一页。(如果当前已经是最后一页那么此按钮无效)
  • 点击最右边的按钮,可以跳到最后一页。

但是,目前洛谷不支持直接跳转到任意页码。因此,如果你需要跳转到某一离当前页很远的页码,只能自己更改 $\text{URL}$

回到图 $8$ 所示的题目列表页面,在浏览器上方地址栏查看目前页面的网址(应该是 https://www.luogu.com.cn/problem/listhttps://www.luogu.com.cn/problem/list?page=1)。

如果是前一种,请在后面添上 ?page=<你要去的页的编号,两边尖括号不用加>,如果是后一种,请直接把 1 改成你要去的页的编号即可。改完之后,按下 Enter 就可以了。


更多的时候我们是用查找题目功能来找题。进入图 $8$ 所示的题目列表页面,在上面的 查找题目 部分的输入框中输入你要找的题目的标题或题号,然后点击 搜索 按钮即可。如图 $10$,查找题目 格雷码

$$\color{gray}\scriptsize\text{图 10 . 查找题目 \texttt{格雷码}}$$

如果你想直接搜索题目内容,需要打开旁边的 搜索题目内容 勾选框。

当然,洛谷还提供了更高级的搜索功能。点击下方的 显示高级搜索选项 即可看到更多的搜索选项(图 $11$)。

$$\color{gray}\scriptsize\text{图 11 . 高级搜索选项}$$

你可以指定 所属题库题目难度算法标签来源时间地区 来搜索。


下面我们一起来看一道试机题目:P1001 A+B Problem

在图 $8$ 所示的题目列表中点击 A+B Problem 即可进入该题目(图 $12$)。

$$\color{gray}\scriptsize\text{图 12 . 题目页面 , 以 P1001 为例}$$

题目主栏大致分为如下几部分。

  • 题目背景:是这道题目的背景信息(可有可无),有可能是一个故事。这一段内容一般不影响做题,但如果你有时间的话还是可以读一下。
  • 题目描述:这是每道题必有的部分,它描述了这个题的题意。
  • 题意翻译:对于一些外语题目,会有这一栏。
  • 输入输出格式:这也是必有的部分,它告诉了你你的程序该如何读取给定的数据,以及如何给出计算出的结果。
  • 样例:一般来说,每道题都会有一个样例。把样例输入输入到你的程序中,你的程序应能给出与样例输出相同的结果(否则就说明你的程序错了,或,极少情况下,样例错了)。样例一般很小(有些正式比赛题会给大样例),手算也可以搞定,这样就减少了你通过样例调试程序的难度。
  • 说明与提示:这一部分一般会放一些样例解释、数据规模与约定什么的。尤其需要注意数据规模,它决定了你该用什么变量类型来存储数据,还决定了你该用什么复杂度的算法来解决此问题。

如果你看到有的题目上方有 征集翻译 的文字,你可以提交翻译,你在提交翻译前应仔细阅读 【官方】翻译提交注意事项两次以上提交不符合翻译提交注意事项中所要求的翻译的用户可能会被禁言。

如果您看到有题目不符合 【官方】洛谷主题库题目规范,请在 【官方】洛谷主题库试题提供及反馈帖 下方说明,而不是在题目讨论版发帖说明。

题目侧边栏大致分为以下几部分:

  • 题目基本信息:包含了题目提供者,题目难度(难度分级刚刚提到过),以及历史分数(你在这道题目的所有提交中得到的最高得分,对于部分非主题库题目,不会显示具体得分而只会显示是否通过,$\text{AC ( Accepted ) }$ 即为通过)。
  • 提交记录:点击 提交记录 按钮即可查看这道题目最近 $400$ 次提交的状态。
  • 题解:点击 查看题解 按钮即可查看本题的题解。
  • 标签:这道题目的算法标签(默认不显示)以及来源标签(默认显示)。
  • 相关讨论:这道题目的讨论版下最近五条讨论以及进入这道题目讨论版的链接,默认不显示。
  • 推荐题目:与这道题目相关的五道题目,默认不显示。
  • 洛谷推荐:一个类似广告的东西,但宣传的都是站内的内容,没有其它无良广告,默认显示,可以点击右上角 关闭 将其关闭。

对于默认不显示的内容,需要点击 查看 来显示。


在认真读题之后,你就可以开始写程序了。你可以在本机上写代码和调试,也可以利用洛谷的在线 $\text{IDE}$

在任意洛谷页面点击左侧边栏的 应用 会出现一个菜单(图 $13$)。

$$\color{gray}\scriptsize\text{图 13 . 应用菜单}$$

点击其中的 在线 IDE,进入在线 $\text{IDE}$ 页面(图 $14$)。

$$\color{gray}\scriptsize\text{图 14 . 洛谷在线 IDE}$$

代码 区域输入代码,然后在 输入 区域填写输入内容,随后点击 运行 即可看到在 输出 区域出现了结果。

如果你的程序在运行时出现了错误($\text{Runtime Error , RE}$),会在 运行 按钮的旁边显示 运行时错误

如果你的程序编译错误($\text{Compile Error , CE}$),会在 运行 按钮的旁边显示 编译失败,并在 输出 区域显示编译信息。

当然,你还可以在右上角选择语言,或者选择是否开 $\text{O2}$ 优化(如果你不知道什么是 $\text{O2}$ 优化,请自行必应或百度搜索)。

洛谷在线 $\text{IDE}$ 有一个好处,就是它的内核基本和洛谷评测机相同,因此对于可能存在未定义行为的代码,使用在线 $\text{IDE}$ 调试更好。(这一点后面还会说到)。


总而言之,调试好程序后,就可以提交了。回到图 $12$ 所示的题目页面,在题目名称下方有一个 提交答案 按钮,点击它,进入提交页面(图 $15$)。

$$\color{gray}\scriptsize\text{图 15 . 提交页面 , 以 P1001 为例}$$

按照提交方式,洛谷的题目可分为两类,提交代码提交答案。大部分题目采用传统方式提交。

提交代码也就是把你的代码提交上去。在图 $15$ 所示的页面,把代码粘贴到光标所在的代码框里,然后点击下面红色的 提交评测 按钮即可。$\text{P1001}$ 即采用的是这种方式。

提交答案是一种新颖的方式,例如 $\text{P1008}$ 三连击 就是一道比较简单的提交答案题。对于这类题目,你可以编程解决,也可以直接手算(如果你有能力的话)。在提交时,你可以选择直接(像提交代码题一样)提交一个按照规定格式输出的程序,这样的话提交方法和提交代码一样。

对于提交答案题,你还可以直接提交一个包含答案的文本文件。将每个测试点的答案按照题目所要求的输出格式写在一个文本文档(.txt 文件)里。对于不同的测试点,它们的答案应该放在不同的文件里。建议把文件按照测试点编号命名,例如

1.txt //注释: 1 号测试点的答案。
2.txt //注释: 2 号测试点的答案。
3.txt //注释: 以此类推。

然后,将这几个文本文档放到同一个压缩包里,压缩包结构应如下所示。

xxx.zip //注释: xxx 可以是任意名字。
 |- 1.txt
 |- 2.txt
 \- 3.txt

即,压缩包内不能包含任何文件夹,也不能包含任何多余的文件。例如下面这样是一个典型错例。

xxx.zip
 \-xxx //注释: 这代表一个文件夹。
    |- 1.txt
    |- 2.txt
    \- 3.txt

注意:压缩包必须是 .zip 格式,不能是 .rar 格式,如果用 WinRAR 创建压缩文件的话,后者是默认选项,千万记得更改。

然后,进入图 $15$ 所示的提交界面,点击 提交文件,看到提交文件页面(图 $16$)。

$$\color{gray}\scriptsize\text{图 16 . 提交文件页面,以 P1008 为例}$$

点击 选择文件 按钮,然后选择刚刚建好的压缩包。

随后页面会变成这样(图 $17$)。

$$\color{gray}\scriptsize\text{图 17 . 选择文件之后的提交文件页面}$$

点击红色的 提交评测 按钮即可。


提交评测后,评测机可能会有一定的时间延迟,这段时间内所有测试点都会显示为 $\text{Waiting/Judging}$,意为等待评测或正在评测。

然后,评测机会对若干个测试数据运行你的程序,并将你的程序对每个数据的输出结果与答案文件比较(比较方式为全文比较忽略行末空格缩进)。以下是几个评测状态。

  • 若比较相同则判为通过($\text{Accepted , AC}$),表现为绿色。
  • 若比较不相同则判为错误($\text{Wrong Answer , WA}$),表现为红色。
  • 若你的程序无法编译通过,则判为编译错误($\text{Compile Error , CE}$),表现为黄色。
  • 若你的程序运行时发生错误,则判为运行时错误($\text{Runtime Error , RE}$),表现为紫色。
  • 若你的程序运行时间超出限制,则判为时间超限($\text{Time Limit Exceeded , TLE}$),表现为深蓝色。
  • 若你的程序运行占用的内存空间超出限制,则判为空间超限($\text{Memory Limit Exceeded , MLE}$),表现为深蓝色。
  • 若你的程序输出超出限制,则判为输出超限($\text{Output Limit Exceeded , OLE}$),表现为深蓝色。
  • 若评测时发生其它错误,则判为未知错误($\text{Unknown Error , UKE}$),表现为深蓝色。(这种情况有可能是你的问题,也有可能是评测机的问题)。

关于常见错误情况的评测结果以及如何应对,详见 【官方】我的程序评测不通过怎么办?

提交后,会跳转到评测结果页面。如果是编译错误,则根本不会运行所有测试点,而是会显示编译信息(图 $20$)。

$$\color{gray}\scriptsize\text{图 20 . 编译错误的评测结果 , 以 R37909797 为例 , 由于这道题目是一道个人题目,因此题目名称作了特殊处理}$$

其中会显示详细的编译信息,从中你可以看出发生了什么错误。

如果你要查看本次提交的源代码,可以点击 源代码

在侧边栏中会显示本次评测的一些信息。包括

  • 提交人,点击用户名即可进入该用户主页。
  • 所属题目,点击题目名称即可进入该题目页面。
  • 评测状态,这里除了 $\text{AC}$ 以及 $\text{CE}$ 之外的全部状态都被概括为 $\text{Unaccepted}$
  • 提交时间

若编译通过,则继续评测全部测试点,等一会(可能需要手动刷新页面)就会出现评测结果,例如图 $18,19$ 所示的页面分别是一次通过的评测和一次不通过的评测(因为有 $4$ 个测试点答案错误)。

$$\color{gray}\scriptsize\text{图 18 . 一次通过的评测 , 以 R37530180 为例}$$

$$\color{gray}\scriptsize\text{图 19 . 一次不通过的评测 , 以 R37529778 为例}$$

其中 $\text{R37529778}$ 即为本次评测记录的编号。评测记录的编号均以 $\text{R}$ 开头。

洛谷采用了方块的形式来表示每个测试点,比较生动形象。每个测试点所代表的方块里有以下信息。

  • 测试点编号,为 #x 的形式。
  • 测试点状态,即上面所说到的各种除 $\text{CE}$ 以外的状态,如果是在评测中则会显示为转圈的图标。
  • 这个测试点所耗费的时间$/$空间,单位为 $\text{ms}$$\text{KB}$

注意:请不要提交恶意卡评测的代码,这样你会被众人所鄙视,也会被管理员给予惩罚。

注意:如果一直在 $\textbf{Judging}$,也不必惊慌,洛谷的评测机性能很高,一般不会被卡。可以重新提交一次,一般就好了。

注意:近期洛谷评测机性能有波动,因此甚至可能会出现同一份代码两次提交结果不一样的情况。如果你确信自己代码是正确的,但莫名超时,可以多提交几次。

在侧边栏会显示评测记录的状态、所属题目、评测分数、提交时间、提交人等,不再详细说明。


如您想查看此题过去自己的提交记录,请回到图 $12$ 所示的题目页面,点击侧边栏中 历史分数 一栏中的分数(如您没有提交,则这里会显示 ),即可进入评测记录页面(图 $21$)。

$$\color{gray}\scriptsize\text{图 21 . 评测记录页面 , 以 P1001 为例}$$

评测记录页面会以类似题目列表的形式给出每条评测记录的简略信息。每条记录自左向右分别是

  • 提交人提交时间,点击用户名即可进入该用户空间。
    注意:如果你对不同的名字颜色有疑惑,请暂时放下这个疑惑,在本文的后面会说的。请万万不要在洛谷社区发帖问!
  • 评测状态,大致分为 $\text{Accepted}$,$\text{Unaccepted}$,$\text{Judging}$,$\text{Waiting}$ 几种状态,分别以不同颜色表示,具体含义可参考上面评测记录部分的介绍。点击状态即可进入相应的,类似图 $18, 19, 20$ 的提交记录页面。
  • 题目名称,同样包含题号和题名,点击题目名称可进入类似图 $12$ 的题目页面。
  • 其它信息,自左向右分别是
    • 评测用时,以 $\text{ms, s}$ 为单位。
      注意:这里的评测用时在多测试点题目中与每个测试点的用时是有区别的!这里的评测用时指的是总共评测所用的时间,而不是最慢的测试点的执行时间。
    • 评测占用的空间,以 $\text{B, KB, MB}$ 为单位。
    • 代码长度,以 $\text{B, KB}$ 为单位。
      注意:代码长度并不是评测占用的空间!评测占用的空间是指程序运行时使用的内存大小,而不是代码长度!
    • 语言,即你提交时选定的语言。

如果你想查看本题的最近 $400$ 条评测记录,请在图 $12$ 所示的题目页面中,点击侧边栏上的 提交记录,即可进入一个类似图 $\text{21}$ 的,显示了全部本题的最近 $400$ 条评测记录。这些记录分为 $20$ 页来显示,所以如果你需要查看最近 $20\sim 400$ 条评测记录,请按照类似题目列表的方法进行翻页。

如果你想查看本人的评测记录,请在如图 $7$ 所示的左侧边栏中,点击 记录,即可进入类似图 $21$ 的,显示了全部你的评测记录的页面。

其实,这个评测记录页面是很通用的,它并不只能找上面说的几种评测记录。

在图 $21$ 所示的评测记录页面,找到上方的 查找记录 部分(图 $23$)。

$$\color{gray}\scriptsize\text{图 23 . 查找记录}$$

你需要输入题目编号和用户名(或 $\text{TA}$$\text{uid}$,图中的 $180720$ 就是我的 $\text{uid}$),然后点击 搜索 即可(这种搜索方法类似上面说过的题目列表中的搜索题目)。

当然,你还可以在下方 筛选选项 中选择你要搜索的记录的状态。


也许你会在类似图 $21$ 的记录页面看到一种例外情况,用户名显示为黑色的 匿名用户,且状态显示为 $\text{Unshown}$。这类用户开启了完全隐私保护,除洛谷管理员外的其它用户无法查看具体记录信息($\textbf{TA}$ 所在团队的管理员也无法查看!)。

事实上,洛谷用户可以决定自己提交的代码以及记录信息是否可被他人看见。调出图 $5$ 所示的菜单,点击 个人设置,可进入个人设置页面(图 $24$)。

$$\color{gray}\scriptsize\text{图 24 . 个人设置页面}$$

点击 使用偏好,看到使用偏好选项卡(图 $25$)。

$$\color{gray}\scriptsize\text{图 25 . 使用偏好选项卡 , 部分选项非默认选项}$$

做题记录隐私 一栏中有三个选项,含义如下。

  • 代码公开计划,为默认选项。选择此选项后,你提交的任何代码都将可被该题得到 $60$ 分及以上的用户看到。
    注意:退出代码公开计划后重新加入,则 $\mathbf{30}$ 天内不得再次退出。
  • 不公开代码。选择此选项后,你提交的代码只可被你所在的团队的管理员以及洛谷管理员看到。
  • 完全隐私保护(完隐)。选择此选项后,你提交的记录不会被任何用户看见,包括你所在的团队的管理员。上面提到的 匿名用户 就是开了完全隐私保护的用户。

有时如果一道题目实在想不出来,也没有关系。洛谷提供了题解区域,允许做出此题的用户发表题解,讲解自己做题的思路。通过题解,你可以学到做此题的方法。

在图 $12$ 所示的题目页面,点击 查看题解,即可进入题解页面(图 $26$)。

$$\color{gray}\scriptsize\text{图 26 . 题解页面 , 以 P1000 为例}$$

在主栏中即为全部题解。有的题目题解较多,会分页显示,同样需要按照类似题目列表的方式翻页。

初始时仅第一篇题解展开,其它题解均默认收起,可点击 展开全文 将收起的题解展开。那么,展开之后如何收起呢?在每篇题解的下面,都有一个小条条(图 $27$)。

$$\color{gray}\scriptsize\text{图 27 . 所谓的 「 小条条 」}$$

在这个小条条的右边,点击 收起,即可收起这篇题解。

如果你觉得一篇题解很不错,可以在图 $27$ 所示的,该篇题解的小条条中,点击 符号,就点赞了此题解。成功点赞后 符号会变蓝。刷新页面之后,赞符号右边的赞数也会加一。

如果你觉得这篇题解写得不好,可以点击 符号右边的 符号,就踩了这篇题解,踩之后赞数会减一。

如果你希望和题解的作者交流,可以点击文章下方图 $27$ 所示的小条条中左数第三个 xxx条评论 按钮。会弹出该题解的评论区(图 $28$)。

$$\color{gray}\scriptsize\text{图 28 . 一篇题解的评论区 ( 为保护隐私 , 已对用户的用户名及其发言做了处理 )}$$

在下方的 发表评论 输入框中输入你要写的评论内容,然后点击 发布 按钮即可发布。发言需遵守 【官方】洛谷社区规则

洛谷的题解实际上就是用户的博客文章,因此它的 赞、踩与评论区 均为博客的 赞、踩与评论区。博客 是一种类似于专栏的东西,每个用户都可以开通自己的博客,并在里面写自己的文章。当然,你也可以提交自己的题解。

注意:洛谷对题解的要求十分严格,多次发布不合要求的题解,是会被处以惩罚的(详见 【官方】题解审核及反馈要求)。而且,大部分题目已经有足够多,足够全面的题解,因此,我不建议初学者发布题解。

博客是很个性化的,有的博客会比题解页面更美观,因此,如果你想在题解作者的博客里看这篇题解,请点击题解右上角的 在 Ta 的博客查看

详尽的对博客的介绍,见后文。

强烈注意:题解仅供你学习思路,有的题解给出了代码,也仅供你参考,而不是直接复制该代码然后提交(抄题解,$\textbf{ctj}$)!洛谷有一个强大的反作弊系统,如果你抄了题解,会被查出。你的名字颜色会被变棕(棕名),并且名字右边会有一个 作弊者 标签。棕名后 $\mathbf{15}$ 天会自动解除棕名,重新回到灰名,并会被清空全部 $\textbf{AC}$ 记录(全部记录在列表中均显示为 $\textbf{Unaccepted 100}$)。在棕名之后的 $\mathbf{90}$ 日内,你参与比赛(比赛会在后面介绍)不会获得任何排名。更多关于抄题解及其惩罚,详见 【官方】洛谷社区规则

(本卷完)