IPUOJ发帖规范v0.2

Showson 2019-08-06 1:25:18 2019-08-07 15:34:10

IPUOJ发帖规范 v0.2

本OJ讨论区仅作为学术交流使用,为了提高发帖质量,提高交流效率,更为了大家能够消除困惑、提升自己解决问题的能力,特制定以下规范。如果你的发布的主题帖或回复的主题帖违反了下面的规则,我们将视情况删除相关的帖子或回复,如果你多次发布违规主题帖或回复,有可能会被暂时禁止发帖和回复。

回复主题帖规范

  • 回复的内容需要和主题帖有关。

发布主题帖规范

  • 发布主题帖一般有两种目的,提问或发布题解。总的来说,关于提问题,我们不提倡 “不懂就问” ,而希望大家在遇到困难时,先自己尝试去解决,解决的时候可以参阅各种课程资料(不要盲目在网络上搜索资料),尽量理解更多的内容,将问题细化,比如问“XX算法这一步为什么要这样,而不是那样”,而不是问“请解释一下XX算法”。一方面,这节省了提问者和回答者双方的时间,更重要的是,这培养了提问者自己解决问题的能力,也更利于提问者消除疑惑——如果看到一个东西,你自己都不去看一遍、理解一遍,那别人再给你讲多少次都没有用;关于发布题解,我们希望大家以给其他同学提供帮助为目的,详细地阐述解题思路,而不是为了炫耀自己通过了题目,说几句话贴个代码就完事了。
  • 具体来说,所有帖子必须是以下三种主题之一。
    • 代码查错贴
    • 知识性问题贴
    • 某个题目的题解
  • 如果问题是针对题库中某个具体的题目的,请在题目对应的讨论区发布。
  • 代码查错贴发帖规范:
    • 在提问之前,你应该先根据代码调试原则自行查错。具体来说,当你的程序发生下述各种错误时,应满足相应的条件后在进行提问,并在提问时提供相应的信息。
    • 编译错误
      • 在OJ上提交时,请选择合适的编译器。如果出现本地可以编译,提交OJ无法编译通过的情况,请尝试选择 C++(NOI) 编译器。
      • 请根据编译器的编译信息提示的行列信息和错误类型,对照相关课程资料,检查附近行的代码是否有明显的语法错误。
      • 使用课程介绍内容以外的语法请自行调试,或改为课程介绍过的语法后再行提问。
      • 在满足上述要求后,你可以发帖提问。发帖时,你应该提供:
        • 本OJ上的提交记录
    • 运行错误
      • 你应该先尝试定位程序崩溃的位置(理论上,你总可以通过输出调试信息来确定崩溃的具体位置)。
      • 找到了程序发生崩溃的位置后,先检查附近代码是否有崩溃可能,如使用全局变量,还应该结合整个代码分析,是否有可能出现爆栈、数组越界、整数被零除等常见的导致程序崩溃的因素。
      • 如果确定了程序崩溃的具体位置,又基本排除了上述常见的程序崩溃因素,查阅课程相关资料后仍然无法解决,你可以发帖提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 程序崩溃的具体位置
        • 自己作出的尝试
    • 答案错误
      • 首先请确保样例能够通过,输出的格式和题目要求相符,不要输出多余的信息。
      • 如果样例能够通过,而提交OJ不能通过,你可以自己手造几组小数据(每组数据要尽量有差别,能覆盖尽量多的可能的输入),检查程序是否能输出正确的结果。如果手造的多组小数据都能够输出正确的结果,请再次确认题目的数据范围,然后造出你可以手算出答案的更大的数据进行测试。
      • 如果有能力,你可以写一个对拍程序来找出使你程序出错的数据。
      • 如果通过以上尝试,你仍然不能找出使你程序出错的数据,你可以发帖提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 你编写程序的大致思路
        • 自己手造的若干组数据和运行结果
      • 如果你能够找到使程序出错的数据,请先检查你编写程序的思路是否正确。
      • 如果确认无误,请确定你的程序在哪一步没有按照你的想法执行(理论上,你总可以通过输出调试信息来确定出错的具体位置),然后检查相关代码并改正。
      • 如果你想不明白为什么程序不按照你的想法运行,你可以提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 你的程序在哪一行没有按照你的想法运行
        • 解释你的解题思路,程序的运行结果,相关变量、语句的含义
    • 程序超时
      • 确定是由于你的程序本身时间复杂度过大导致超时,还是程序没有按照你的预期运行。如果是前者,请以 “知识性问题贴” 提问。
      • 如果样例能够通过,而提交OJ不能通过,你可以自己手造几组小数据(每组数据要尽量有差别,能覆盖尽量多的输入可能),检查程序是否能在规定的时间内运行结束。如果手造的多组小数据都程序都能够正常结束,请再次确认题目的数据范围,然后造出更大的数据(你可以写一个程序用来造大规模的数据)进行测试。
      • 如果通过以上尝试,你仍然不能找出使你程序超时的数据,你可以发帖提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 你编写程序的大致思路
        • 自己手造的若干组数据和运行结果
      • 如果你能够找到使程序超时的数据,请先检查你编写程序的思路是否正确,如果发现是算法本身超时,请以 “知识性问题贴” 提问。
      • 如果确认无误,请确定你的程序在哪一步超时(理论上,你总可以通过输出调试信息来确定超时的具体位置),然后检查相关代码并改正。
      • 如果你想不明白为什么程序会超时,你可以提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 你的程序在执行哪一段代码时超时
        • 解释你的解题思路,程序的运行结果,相关变量、语句的含义
    • 超过空间限制
      • 一般是由于使用了过多的空间导致的,请检查代码中申请空间的每一处地方,估计出最多会申请的空间,如果确认空间没有超过题目限制,你可以提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 指出所有申请空间的地方
        • 你估算出的程序使用的最大空间
    • 其他问题
      • 根据错误类型提示尝试自己解决,如果不能解决,你可以发帖提问。提问时,你应该提供:
        • 本OJ上的提交记录
        • 自己作出的尝试
  • 知识性问题贴发帖规范:
    • 提问的内容应当是课程相关的内容,课程外的内容不建议在此讨论。
    • 如果你有前置的知识还没有搞清楚,就先把它搞清楚,(不要想着“我会做IOI的题了,那NOIP的题肯定也会做了”,因为逻辑是“你连NOIP的题都搞不清楚,怎么可能搞清楚IOI的题?”)。搞不清楚的话,先对前置知识的问题,按照此规范进行提问。
    • 在掌握前置知识后,尝试根据相关的课程资料尽量理解更多的内容,然后将提出的问题细化到具体的某一步。在这样的基础上,你可以提问。提问时,你应该提供:
      • 详细的问题描述和与该问题有关的必要信息
      • 自己的理解和对具体某一步的疑问
  • 题解发帖规范:
    • 如果你解决了一道题目,并希望将自己的做法分享给大家,你可以选择发布一篇题解。
    • 发布题解时,应主要阐述解题思路,将解题思路描述清楚即可,不要贴代码。
    • 在满足以上条件时,你可以在对应题目的讨论区发布题解。

共 29 条回复

biggayboy
biggayboy
biggayboy
biggayboy
biggayboy
biggayboy
biggayboy
biggayboy
biggayboy
biggayboy