Polygen使用小结

Polygen作为Codeforces的题目管理平台,其实在各种比赛的出题工作中都有着广泛的应用。

该平台能维护题目和比赛,并直接导入到Codeforces,如果有自己架设的OJ,同样也能在生成题面/数据、做一些规范检查等方面对出题有所帮助。

关于题目

网上有这方面的大概资料,参考这篇文章即可 codeforces的polygon平台使用指北

关于比赛

先平台上新建比赛,将需要的题目和出题人拉入比赛,就可以开始制作一场比赛了。

接下来主要介绍一下如何生成题面,Polygen自带一个$Preview Statements as PDF$(预览pdf格式的题面的功能)。

主要是用平台自带的$Latex$模版来生成一套完整的比赛题面。

带有中文的题面会显示乱码或者出错,为了使它支持中文,我们需要将比赛中所有题目的$files$里的$problem.tex$文件替换成如下代码:

egin{problem}{${problem.name}}<#--
-->{<#if "stdin" == problem.inputFile><#--
     --><#if "russian" == language>стандартный ввод<#--
     --><#else>standard input<#--
     --></#if><#else>${problem.inputFile}</#if>}<#--
-->{<#if "stdout" == problem.outputFile><#--
     --><#if "russian" == language>стандартный вывод<#--
     --><#else>standard output<#--
     --></#if><#else>${problem.outputFile}</#if>}<#--
--><#assign timeLimit=problem.timeLimit/1000/><#--
--><#if language="russian"><#--
    --><#if problem.timeLimit%1000!=0||(10<=timeLimit%100&&timeLimit%100<20)||timeLimit%10=0||5<=timeLimit><#--
        -->{${timeLimit?c} секунд}<#--
    --><#else><#--
        --><#if timeLimit%10=1><#--
            -->{${timeLimit?c} секунда}<#--
        --><#else><#--
            -->{${timeLimit?c} секунды}<#--
        --></#if><#--
    --></#if><#--
--><#else><#--
    -->{${timeLimit?c} second<#if (timeLimit!=1)>s</#if>}<#--
--></#if><#--
--><#assign memoryLimit=problem.memoryLimit/1048576/><#--
--><#if language="russian"><#--
    --><#if problem.memoryLimit%1048576==0&&!(10<=memoryLimit%100&&memoryLimit%100<20)&&2<=memoryLimit%10&&memoryLimit%10<5><#--
        -->{${memoryLimit?c} мегабайта}
    <#else><#--
        -->{${memoryLimit?c} мегабайт}
    </#if>
<#else><#--
    -->{${memoryLimit?c} megabyte<#if (memoryLimit>1)>s</#if>}
</#if>

<#if providedStatementsCommands?? && providedStatementsCommands?size != 0><#--
    --><#list providedStatementsCommands as command><#--
        -->${command?string}
</#list>

</#if>
${problem.legend}

<#if problem.input?? && (problem.input?length>0)>
InputFile
${problem.input}

</#if>
<#if problem.output?? && (problem.output?length>0)>
OutputFile
${problem.output}

</#if>
<#if problem.interaction?? && (problem.interaction?length>0)>
Interaction
${problem.interaction}

</#if>
<#if problem.scoring?? && (problem.scoring?length>0)>
Scoring
${problem.scoring}

</#if>
<#if  (problem.sampleTests?size>0)>
Example<#if  (problem.sampleTests?size>1)>s</#if>

begin{example}
<#list problem.sampleTests as test>
exmpfile{${test.inputFile}}{${test.outputFile}}%
</#list>
end{example}
</#if>

<#if (problem.notes??) && (problem.notes?length > 0)>
Note
${problem.notes}

</#if>
end{problem}

接下来比赛还需要一个封面,这个可以直接修改$constest$的$Properties/Files$中的$statements.ftl$文件。

比如我们可以简单地在$egin{document}$之后加入如下代码来增加一个封面。

	itle{Hugetextbf{{{ The Test Contest }}}}
date{}
author {Test University }
maketitle
includegraphics[width=7in]{statements-logo.png}

这里的封面有比赛名,作者,logo。

值得注意的是如果需要导入图片需要在$Properties/Files$中上传(题目中的图片同理)。

总的来说,主要还是用$Latex$模版来生成题面,需要做一些修改就学着去改$Latex$即可。

最后的效果如图:

如果需要对封面再进行一些设计,我推荐直接使用$Photoshop$进行编辑。

比如这样:

原文地址:https://www.cnblogs.com/megalovania/p/12969167.html