来了?坐,欢迎来到 = UOJConfig::$data['profile']['oj-name'] ?>。
众所周知,信息学的题目一般形式为:给出XXXXX,要你提交一份源代码,输出XXXXX,然后时限若干秒,内存若干兆,数据若干组,每组数据与答案进行比较,不对就不给分。
看起来挺合理的,但是总是有意外。比如要求输出一个浮点数,与答案接近就满分。于是只好引入Special Judge来判断选手输出的正确性。
但是还是有意外,比如提交两个程序,一个压缩另一个解压;比如提交答案题只用提交文件;比如给出音乐要求识别乐器,达到90%的正确率就算满分……
这个时候UOJ出现了,于是= UOJConfig::$data['profile']['oj-name-short'] ?>就使用了这套系统。Universal的中文意思是通用,之所以称之为UOJ,因为我们所有题目从编译、运行到评分,都可以由出题人自定义。
如果你正在为没有地方测奇奇怪怪的题目而苦恼,那么你来对地方了。
当然了,= UOJConfig::$data['profile']['oj-name-short'] ?>对于传统题的评测也做了特别支持。平时做题时我很难容忍的地方就是数据出水了导致暴力得了好多分甚至过了,而出题人却委屈地说,总共才一百分,卡了这个暴力就不能卡另一个暴力,所以暴力过了就过了吧。
所以我们引入了Extra Tests和Hack机制。每道传统题的数据都分为Tests和Extra Tests,Tests满分100分,如果你通过了所有的Tests,那么就会为你测Extra Tests。如果过了Tests但没过Extra Tests那么倒扣3分变为97分。Extra Tests的来源,一个是这道题没什么人可能会错的边界情况可以放在里面,另一个就是各位平时做题的时候,如果发现错误算法AC了,可以使用hack将其卡掉,= UOJConfig::$data['profile']['oj-name-short'] ?>会自动加入Extra Tests并重测。我们无法阻止暴力高分的脚步,但是不让他得满分还是有心里安慰作用的~
= UOJConfig::$data['profile']['oj-name-short'] ?>还有比赛功能可以承办比赛,赛制暂时只支持OI赛制。(不过你可以利用现有方案变相实现ACM赛制!)未来将支持更多种多样的赛制甚至自定义赛制。
目前= UOJConfig::$data['profile']['oj-name-short'] ?>刚刚起步,还有很多地方有待完善。想出题、想出比赛、发现BUG、发现槽点都可以联系我们,联系方式见下。
祝各位在= UOJConfig::$data['profile']['oj-name-short'] ?>玩得愉快!(求不虐萌萌哒服务器~求不虐萌萌哒测评机~!)
= UOJConfig::$data['profile']['oj-name-short'] ?>不提供头像存储服务。每到一个网站都要上传一个头像挺烦的对不对?我们支持Gravatar,请使用Gravatar吧!Gravatar是一个全球的头像存储服务,你的头像将会与你的电子邮箱绑定。在各大网站比如各种Wordpress还有各种OJ比如Vijos、Contest Hunter上,只要你电子邮箱填对了,那么你的头像也就立即能显示了!
快使用Gravatar吧! Gravatar地址:https://cn.gravatar.com/。进去后注册个帐号然后与邮箱绑定并上传头像,就ok啦!
默认的测评环境是 Ubuntu Linux 18.04 LTS x64。
C的编译器是 gcc 7.4.0,编译命令:gcc code.c -o code -lm -O2 -DONLINE_JUDGE
。
C++的编译器是 g++ 7.4.0,编译命令:g++ code.cpp -o code -lm -O2 -DONLINE_JUDGE
。如果选择C++11会在编译命令后面添加-std=c++11
。
Java8的JDK版本是 openjdk 1.8.0_212,编译命令:javac code.java
。
Java11的JDK版本是 openjdk 11.0.3,编译命令:javac code.java
。
Pascal的编译器是 fpc 3.0.4,编译命令:fpc code.pas -O2
。
Python会先编译为优化过的字节码.pyo文件。支持的Python版本分别为Python 2.7和3.6。
没错就是这样!除非是特殊情况,= UOJConfig::$data['profile']['oj-name-short'] ?>测评程序时的栈大小与该题的空间限制是相等的!
对于这类问题,我们在这里简单列一下可能原因:
= UOJConfig::$data['profile']['oj-name-short'] ?>博客使用的是Markdown。(好吧……好简陋的……好多功能还没写……)
(喂喂喂我们是OJ好吗……要那么完善的博客功能干啥呢……?)
其实我觉得Markdown不用教!一学就会!
(完蛋了……= UOJConfig::$data['profile']['oj-name-short'] ?>好像没有Markdown的语法高亮……= =……)
我就只介绍最基本的功能好了。其它的自己探索吧~比如这里。
**强调**
= 强调
*强调*
= 强调
[= UOJConfig::$data['profile']['oj-name-short'] ?>](= HTML::url('/') ?>)
= = UOJConfig::$data['profile']['oj-name-short'] ?>
= HTML::url('/') ?>
= = HTML::url('/') ?>
![这个文字在图挂了的时候会显示](= HTML::url('/pictures/UOJ.ico') ?>)
=
`rm orz`
= rm orz
数学公式萌萌哒$(a + b)^2$萌萌哒
= 数学公式萌萌哒$(a + b)^2$萌萌哒
<!-- readmore -->
= 在外面看这篇博客时会到此为止然后显示一个“阅读更多”字样
来个更大的例子:
```c++ #include <iostream> ``` ```c #include <stdio.h> ``` ```pascal begin ``` ```python print '= UOJConfig::$data['profile']['oj-name-short'] ?>' ``` \begin{equation} \frac{-b + \sqrt{b^2 - 4ac}}{2a} \end{equation} #一级标题 ##二级标题 ###三级标题 ####四级标题
会转换为:
#include <iostream>
#include <stdio.h>
begin
print '= UOJConfig::$data['profile']['oj-name-short'] ?>'
\begin{equation} \frac{-b + \sqrt{b^2 - 4ac}}{2a} \end{equation}
还有一个很重要的事情,就是你很容易以为= UOJConfig::$data['profile']['oj-name-short'] ?>在吃换行……
那是因为跟LaTeX一样,你需要一个空行来分段。你可以粗略地认为两个换行会被替换成一换行。(当然不完全是这样,空行是用来分段的,段落还有间距啊行首空两格啊之类的属性)
唔……就介绍到这里吧。想要更详细的介绍上网搜搜吧~
(评论区是不可以用任何HTML滴~但是数学公式还是没问题滴)
唔……好问题。交互式的题一般给了一个头文件要你include进来,以及一个实现接口的源文件grader。好像大家对多个源文件一起编译还不太熟悉。
对于C++:g++ -o code grader.cpp code.cpp
对于C语言:gcc -o code grader.c code.c
如果你是悲催的电脑盲,实在不会折腾没关系!你可以把grader的文件内容完整地粘贴到你的code的include语句之后,就可以了!
什么你是萌萌哒Pascal选手?一般来说都会给个grader,你需要写一个Pascal单元。这个grader会使用你的单元。所以你只需要把源文件取名为单元名 + .pas
,然后:
对于Pascal语言:fpc grader.pas
就可以啦!
如果你想出题、想办比赛、发现了BUG或者对网站有什么建议,可以通过下面的方式联系我们: