first commit

This commit is contained in:
2026-02-07 09:46:32 +08:00
commit 5fcd5dc646
443 changed files with 89466 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
<p align="center"><strong>数据文件</strong></p>
<p>每个程序在运行时,除了可以通过标准输入来获取数据外,还可以读取一个或一系列的数据文件。这些数据文件对于每一个测试用例都是一样的,即程序每次执行时都可以读取到这些文件。</p>
<p>每个数据文件都可以有两份,一份用于在布置编程练习时作为题目的一部分展现给用户,而另一分则用于评测系统评分。如果不提供第二份数据文件,则在评分时也使用第一份数据。</p>
<p>在为数据文件命名时请确保它和编程练习的输入/输出文件名不同。</p>

View File

@@ -0,0 +1,5 @@
<p align="center"><strong>编辑测试输出</strong></p>
<p>用户可以直接将测试输出贴到文本框中,也可以通过文件上传测试输出,后者的优先级较高。</p>
<p>如果测试输出较小(通常为小于 10K在编辑时会直接显示在文本框中否则不会显示在文本框中用户只能通过下载按钮下载查看。</p>

View File

@@ -0,0 +1,5 @@
<p align="center"><strong>编辑测试输入</strong></p>
<p>用户可以直接将测试输入贴到文本框中,也可以通过文件上传测试输入,后者的优先级较高。</p>
<p>如果测试输入较小(通常为小于 10K在编辑时会直接显示在文本框中否则不会显示在文本框中用户只能通过下载按钮下载查看。</p>

View File

@@ -0,0 +1,2 @@
<p align="center"><strong>程序返回值</strong></p>
<p>此项为用户程序的主函数的返回值,通常只有返回值为 0 的程序才能 AC。</p>

View File

@@ -0,0 +1,3 @@
<p align="center"><strong>期待的输出</strong></p>
<p>此项为用户的程序在读入指定输入后应当产生的输出,通常测试系统会通过比对期待的输出和测试输出来判断程序是否正确。</p>
<p>对于有“验证程序”的编程练习,期待的输出和测试输出不一定相同。</p>

View File

@@ -0,0 +1,3 @@
<p align="center"><strong>测试输入</strong></p>
<p>此处显示的是系统测试用户的程序时,在标准输入流上提供给用户程序的数据。</p>
<p>通常在此页面上只显示测试输入的前面部分,要查看完整的测试输入,请点击输入信息上方的“下载”按钮。</p>

View File

@@ -0,0 +1,13 @@
<p align="center"><strong>测试结果</strong></p>
<p>这是测试系统运行程序后的结果,其中各项的含义如下:</p>
<ul>
<li>AC: 程序完全正确。</li>
<li>WA: 程序正确运行但结果错误。</li>
<li>CE: 编译错误。</li>
<li>RE: 程序在运行时发生错误,对于 C/C++ 语言编写的程序,这种错误多由无效内存引用造成。</li>
<li>TLE: 程序时间超限,指程序运行的时间太长,超过了该练习设定的限制。</li>
<li>OLE: 程序输出超限,指程序在标准输出流上输出的信息太多,超过了系统限制。</li>
<li>KS: 程序被某信号中断,这要根据具体中断程序的信号而定,关于信号的内容可以参考 Linux 手册中的相关信息。</li>
<li>JGE, JSE: Online Judge系统错误请与管理员联系。</li>
</ul>
<p>对于未能正确运行的程序,不会产生 WA 错误。</p>

View File

@@ -0,0 +1,3 @@
<p align="center"><strong>内存限制</strong></p>
<p>用户的程序不能使用超过此限制的内存。</p>
<p>此限制仅对 C(gcc-3.3)、C++(g++-3.3)、Pascal(fpc-2.2)和Java(gcj-3.3)有效。</p>

View File

@@ -0,0 +1,2 @@
<p align="center"><strong>额外进程</strong></p>
<p>通常情况下,每个程序只能启动一个进程(线程)。如果教师希望学生可以在提交的程序中使用多个进程(线程),则可以为每个测试用例设定额外进程数。</p>

View File

@@ -0,0 +1,4 @@
<p align="center"><strong>测试输出</strong></p>
<p>此处显示的是系统测试用户提交的程序时,该程序在标准输出流上输出的内容。</p>
<p>在显示时,通常只显示测试输出的前面部分,要想查看全部内容,可以点击输出信息上方的下载按钮下载。</p>
<p>为避免存储过多无效信息,在数据库中,只存储了测试输出的前 64K因此即便使用下载功能也只能看到输出的前面部分。</p>

View File

@@ -0,0 +1,7 @@
<p align="center"><strong>预设代码</strong></p>
<p>预设代码是出题者提供的代码,这些代码会和学生提交的代码一同被编译、执行。</p>
<p>预设代码的位置可以有三个:在学生提交的代码前、后或作为独立的文件存在。当前置代码或后置代码有多份时,则他们会被按照顺序逐一附加。</p>
<p>每段预设代码都可以有两份,一份展示给学生,另一份则用于判分。但我们建议您只针对后置代码和独立文件提供两份不同的预设代码,否则会造成编译错误信息和执行错误信息中行号失去意义。</p>

View File

@@ -0,0 +1,2 @@
<p align="center"><strong>错误信息</strong></p>
<p>错误信息是系统运行用户的程序时该程序在标准输出流上输出的信息。</p>

View File

@@ -0,0 +1,7 @@
<p align="center"><strong>提交</strong></p>
<p>用户可以在这里提交自己编写的程序,提交有两种方式,一种是将程序的源代码复制到“代码”区域中,另一种是直接提交程序的源文件,后一种方式的优先级较高,即一旦指定要提交的文件,代码区域中的代码就不会被提交。</p>
<p> 无论使用哪种方式,用户都必须选择编写该程序使用的编程语言。</p>
<p>系统会自动记录用户上一次选择的编程语言。</p>

View File

@@ -0,0 +1,3 @@
<p align="center"><strong>测试用例</strong></p>
<p>评测系统是通过测试用例来判断用户的程序是否正确的,每个测试用例都有输入、输出,通常评测系统通过判断用户程序的输出是否和期待输出相同来确定程序是否正确。</p>

View File

@@ -0,0 +1,3 @@
<p align="center"><strong>测试用例是否公开</strong></p>
<p>测试用例可以显示给用户也可以是隐藏的。隐藏的测试用例用户只能得到程序的运行结果如“AC”、“RE”等无法得知其它任何信息。</p>
<p>除非已经在题目的内容中给出了测试用例,否则应当设定至少一个公开的测试用例,这样用户才能知道程序对输入、输出的要求。</p>

View File

@@ -0,0 +1,2 @@
<p align="center"><strong>时间限制</strong></p>
<p>用户的程序需在此限制之内运行完毕。</p>

View File

@@ -0,0 +1,2 @@
<p align="center"><strong>用时</strong></p>
<p>此项为系统执行用户程序所花费的时间。</p>

View File

@@ -0,0 +1,34 @@
<p align="center"><strong>验证程序</strong></p>
<p>验证程序的作用是检查用户的程序输出的答案是否正确。目前系统支持的验证程序有以下几种:</p>
<ul>
<li>
<p><strong>字符串比较</strong>:直接用标准答案与用户输出的答案进行字符串比较,只有当用户输出的答案中的全部内容(包括回车和空格等字符)与标准答案完全一致时,才认为用户的程序正确。</p>
</li>
<li>
<p><strong>字符串比较,支持 PE 错误</strong>:用标准答案与用户输出的答案进行字符串比较,如果完全一致则输出 AC如果答案中数字的部分是一致的则输出 PE否则输出 WA。</p>
</li>
<li>
<p><strong>比较文件尺寸和校验码</strong>:这种验证方法用于那些要求用户写文件的情况。使用这种校验方法时,每一个测试用例的“期待的输出”应当是每一个要输出的文件的文件名、尺寸和 MD5 校验码,如:</p>
<pre>one.bmp 150 74deae71e8ca1378dafe56ebe83c2d29
two.bmp 150 4877675b19d2e1b339f3b46472d765d2</pre>
<p>验证程序会查看用户是否输出了要求的文件,并检查文件的尺寸和 MD5 校验码是否与要求的相同。如果完全一致,则判为 AC否则为 WA并将错误记录在“测试输出”中。</p>
</li>
<li>
<p><strong>自定义的验证脚本</strong>:除了上述的判分方法,教师还可以用自己习惯的语言编写验证程序,检查用户提交的程序是否正确。对于那些标准答案不唯一的情况,这种验证脚本是必须的。</p>
<p>在执行验证程序时,评测系统会在命令行上传递三个参数给验证程序。这三个参数是三个文件名,分别指向存储着测试用例的输入、期待的输出和用户程序实际输出的文件。验证程序可以读取这些文件,并计算出用户程序的实际输出是否正确。</p>
<p>如果程序的实际输出正确则验证程序应当在标准输出流上输出“AC”如果仅仅是格式错误可以输出“PE”否则输出“WA”。</p>
<p>下面是一个简单的验证程序,它比较测试用例的输入和用户的实际输出是否相同:</p>
<pre>import sys
fin = file(sys.argv[1], 'r')
frst = file(sys.argv[3], 'r')
in = fin.readlines()
rst = frst.readlines()
fin.close()
frst.close()
print 'AC' if in == rst else 'WA'</pre>
</li>
</ul>

View File

@@ -0,0 +1,4 @@
<p align="center"><strong>权重</strong></p>
<p>权重是通过一个测试用例时获得分数的比例。在实际计算分数时,一个测试用例所占的分数比例为该测试用例的权重除以全部测试用例的权重之和。</p>
<p>例如,四个测试用例,第一个权重为 1其余权重为 3则第一个用例的分数为总分乘以十分之一其余用例分数为总分乘以十分之三。</p>
<p>权重为 0 的测试用例不得分。</p>