• 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$进行编辑。

    比如这样:

  • 相关阅读:
    laravel Eloquent 模型(也就是我本时说的Model)
    laravel 查询构建器(连贯操作)
    laravel 模版引擎使用
    laravel 数据库操作(表、字段)
    url重写(urlrewrite)的一些系统变量
    apache 图片防盗链
    在线制作api文档
    php 网络爬虫,爬一下花瓣的图片
    laravel 使用 session
    laravel 控制器构造方法注入request对象
  • 原文地址:https://www.cnblogs.com/megalovania/p/12969167.html
Copyright © 2020-2023  润新知