当前位置: 首页 > news >正文

polygon出题教程

Polygon 是一个支持多人协作的出题平台,功能非常完善。官网描述为Polygon 的使命是为创建编程竞赛题目提供平台。

在 Codeforces (CF) 出题必须使用 Polygon。在其它地方出题,尤其是多人合作出题时,使用 Polygon 也是不错的选择。

2.创建题目

进入polygon首页,点击“New Problem”。

进入创建题目界面,自定义题目的名称,要求只能使用小写的单词,用破折号分隔。

随后进入题目列表点“start”进入题目编辑。

3.题目信息维护

3.1 题目基础信息维护

上方可以对题目的基础信息进行维护,包括输入输出文件、时间限制、空间限制、交互题。

选项含义
Input file:输入文件名或输入“stdin”以使用标准输入
Output file:输出文件名或“stdout”表示标准输出
Time limit:每测试点的时间限制(限制250毫秒到15000毫秒之间)
Memory limit:内存限制(限制4 MB 和 1024 MB 之间)
Interactive:是否是交互题

下方“Tags” 可用来维护题目的知识点,但需要使用英文。polygon出题一定需要配置知识点。

3.2 配置题面(中文)

首先进入“Files”选项内,替换“olymp.sty”、“problem.tex”和“statements.ftl”的源码为支持中文的,源码可见项目:GitHub - LMTINSUZHOU/polygon-chinese-latex-file: A file for use codeforces polygon by chinese · GitHub

点击文件的“Edit”编辑文件:

替换完成后点击“Save”保存,注意保存需要等待左下角出现绿色的“File problem.tex has been saved”出现才能返回。

随后进入“statement”选项,“Language”选择“Chinese”并点击“Create”。

随后进入如下页面即可编辑题目:

选项含义
Name:题目名称
Legend:题面
Input format:输入说明
Output format:输出说明
Notes:提示

书写时须使用latex语法,可参考polygon的官方手册或第三方手册,注意Polygon的样例不在此处输入,而是取测试点的处设置的样例。如需插入图片可在下方“Statement Resource Files”中上传,并调用。

编辑完成后可以点击右上角的“In HTML”或“In PDF”查看,建议查看“In PDF”以保证无误。

4.Checker的配置

checker是用来判断题面是否通过的检查器,使用testlib.h编写。

编写可以参考CF官方说明、oi-wiki、cnblog、luogu等,其有被称为spj程序。

自定义checker可以点击“New file”并输入checker.cpp作为检查器源文件名称(可以自定义但是这样写清楚)随后点击“Create file”来粘贴你的checker并保存。

自定义checker需要给checker准备测试样例,检查checker的准确性。在“Checker tests“中点击”Add Test“添加,随后点击“Run tests”运行检查。

这些是polygon自带的checker,可以满足一般的需求。

文件名说明
fcmp.cpp按行比较,不忽略空白字符
hcmp.cpp单个超大整数
lcmp.cpp按行比较,忽略空白字符
ncmp.cpp一个或多个 int64,忽略空白字符
nyesno.cpp零个或多个 yes/no,大小写不敏感
rcmp4.cpp一个或多个 double,最大允许误差 1E-4
rcmp6.cpp一个或多个 double,最大允许误差 1E-6
rcmp9.cpp一个或多个 double,最大允许误差 1E-9
wcmp.cpptoken 序列比较
yesno.cpp单个 yes 或 no,大小写不敏感

5.Validator校验器的配置

Validator 用于检验造好的数据的合法性。当造好一道题的数据,又担心数据不合法时,出题者通常会借助 validator 来检查。

编写可以参考:CF官方说明、oi-wiki、luogu等。

文件上传可以参考checker.cpp的文件创建。

自定义Validator需要给Validator准备测试样例,检查Validator的准确性。在“Validatortests“中点击”Add Test“添加,随后点击“Run tests”运行检查。

6.测试点的配置

polygon的样例输入是可以自己配置的,但是答案是有标程生成的。

配置样例我们首先需要点击“Solution files”,点击“Add file”上传标程或者“New file”创建文件。

随后点击“Tests”进入测试点的配置。

首先,我们可以点击“Add Test”添加自己书写的测试点,注意测试点需要满足输入检查的要求。其中“Use in statements”配置可以将测试点配置为样例。

除了这个方式我们还可以以使用数据生成器,教程可以参考[Polygon:从入门到入门](Polygon:从入门到入门 - Frost_Ice - 博客园)、luogu等。

如果需要使用数据生成器,需要在“Files”选项中的“Source Files”中上传“gen.cpp”。

随后按照polygon的要求书写生成脚本,点击“Save Script”即可保存并生成测试点,点击“Preview“可以查看输出。

7.打包

随后确保右上方的栏目内无黄色异常可前往“Packges”选项创建包。

在此之前,前往右下角点击“Commit Changes”上传修改。完成后可以回到“Packges”点击“Full”生成所有的数据包。系统会自动校验并使用你书写的cheker、validator、Test脚本来生成数据。

随后会生成三个包,Standard包中仅包含脚本文件无测试点,Windows包中包含脚本文件和测试点(以wi

http://www.jsqmd.com/news/1068750/

相关文章:

  • 【剪映小助手】字幕信息生成接口(Caption Infos)
  • DiffusionGemma:用离散文本扩散和双向注意力,把推理瓶颈从内存带宽转移到算力
  • CentOS Stream 9/CentOS Stream 10配置静态IP和配置dnf/yum源
  • DeepSeek V4稀疏注意力DSA原理与实战优化
  • Claude Cowork深度解析:本地化AI智能体如何重塑macOS办公自动化
  • Vibe Coding实战:Vue3管理后台的AI协同开发流
  • 从Web命令注入到Linux SUID提权:一次完整的渗透测试实战解析
  • Crawler之Tool:Scrapling的简介、安装和使用方法、案例应用之详细攻略
  • Qwen3.7-Max原生智能体:从问答模型到自动干活的Agent跃迁
  • 家用 NAS 装好硬盘别着急用,前期优化设置教程请收好
  • 【VibeCoding系列教程16】 我的AI工具箱
  • 海量数据如何解决?位图和布隆过滤器来帮你
  • Ubuntu 20.04 下 Nextcloud Snap 部署避坑指南:SSL、权限与反向代理实战
  • Ubuntu 18.04 安装 Anaconda 兼容性问题与修复方案
  • CentOS 7多版本PHP共存实战:基于PHP-FPM多池与Apache反向代理
  • Go context.Context 原理与工程实践:控制流统一管理指南
  • 《哥你不许打我老公》小说|下载|txt
  • AScript扩展多种脚本语言
  • 《Java + Spring 实现 Hermes Agent 之龙虾、Skills、MCP 和沙箱代码执行环境思路》
  • GlusterFS冗余存储池在Ubuntu上的可靠性实践
  • 银河麒麟V10安装Wireshark:权限配置与抓包实战指南
  • Qoder CN Credits机制详解:AI编码助手的算力计量与精算实践
  • Ubuntu 20.04 + MySQL 8.0 构建三节点MGR高可用集群实战
  • 渗透测试信息收集:从OSINT到攻击面绘制的完整实战指南
  • 银行卡BIN码全解析:从编码原理到支付路由与风控实战
  • JavaScript数组方法实战:map/filter/forEach的语义契约与工程避坑
  • 2026年外贸独立站建站全攻略:从SEO到GEO,你的网站正在被AI“面试”
  • 联合查询注入攻击原理与防御实战:从手工注入到自动化工具
  • 嵌入式测试第 40 天:智能手表/手环嵌入式测试拆解
  • 1023. 【USACO题库】2.1.4 Healthy Holsteins健康的好斯坦奶牛