ICPC-TOOLs resolver滚榜单工具使用指南

2023-11-19

0.引言:

上周突然临危受命,学校ACM社团要举办校内迎新赛,想要使用滚榜功能让揭晓结果变得更加刺激。奈何本人不打ACM,一开始连滚榜都不知道(苦笑.jpg),不过还是跌跌撞撞把功能实现了,介于网络上这方面的教程实在是凤毛麟角,我就把自己的经验和心得留给以后有需要的同学。

1.官网下载压缩包

首先来到官网下载resolver的压缩包

ICPC Tools

image-20221211140542632

解压下来的目录结构

image-20221211141343610

友情提示:可以先看READMD.pdf ,官方文档比网上的教程更加全面和细致。

举个栗子,其中较为重要的有

命令行实例

  • 这是从CDS服务器拉取的比赛信息
resolver.bat https://169.254.80.194:8443 admin adm1n --presenter --fast 0.7
  --rowDisplayOffset 4 --info

image-20221211142050896

  • 这是从本地文件来获取比赛信息
resolver.bat c:\events.json --singleStep 999

image-20221211142002152

键盘快捷键

  1. Ctrl + q 停止
  2. space or f 下一步
  3. r 上一步
  4. +/= 加速
  5. -/_ 减速
  6. ….

1.5.解决中文乱码的问题

来到lib下的presentation.jar,可以看到我们的字体是Helvetica-Plain.ttf

image-20221211150525755

来到Win10字体文件夹:C:\Windows\Fonts

image-20221211150928661

将一款中文字体添加到presentation.jar的font目录重命名为Helvetica-Plain.ttf就可以了

2.构建xml文件

由于我们选择的方式是从本地文件来加载比赛信息,那么我们就需要按照规定的格式和规范来构建xml文件

这里推荐一下网络上的教程

滚榜程序Resolver源码阅读

icpc-tools resolver 滚榜工具使用指北

就我在实际过程中总结一下

xml文件必须的内容,可以分为以下几个部分:

  1. 比赛基本信息(比赛名称,持续时间之类的, info项)
  2. 比赛区域信息(队伍所属大洲,如亚洲等,我在实际使用的时候以学院作为区域喂的数据, region项)
  3. 判题结果信息(根据OJ的实际情况来,主要是设置各种判题结果怎么处理,比如说CE算不算罚时,每次错误提交算多少罚时之类的,judgement项)
  4. 代码语言信息(随便加一加就好了,实际滚榜并不会用到,但是你需要保证你OJ的提交中的语言都在这里包含了,否则会报错, language项)
  5. 队伍信息(选手信息, team项)
  6. 题目信息(problem项)
  7. 结果信息(对应所有的提交,按格式生成对应的结果信息,run项)
  8. 增加比赛结束标志(finalized项)
<contest>
    <info>
    ...
    </info>

    <region>
    ...
    </region>

    <judgement>
    ...
    </judgement>

    <language>
    ...
    </language>

    <problem>
    ...
    </problem>

    <team>
    ...
    </team>

    <run>
    ...
    </run>

    <finalized>
    ...
    </finalized>
</contest>

1.info

info标签里面记录比赛的有关信息,包括比赛的编号、标题、罚时、开始时间戳、比赛总时长、封榜时间…

info, fianlized标签只能有一个,其他标签可以有多个

<info>
  <length>4:00:00</length>  
  <penalty>20</penalty> 
  <started>False</started> 
  <starttime>1512824400.0</starttime>
  <title>2017 USTB ACM-ICPC Final Contest</title>
  <short-title>2017 USTB ACM-ICPC Final Contest</short-title>
  <scoreboard-freeze-length>0:30:00</scoreboard-freeze-length>
  <contest-id>default--3</contest-id> 
</info>

2.region

region记录比赛选手的区域的相关消息,包括区域编号,名称

<region>
  <external-id>1</external-id>
  <name>School of Computer and Communication Engineering</name>
</region>
<region>
  <external-id>2</external-id>
  <name>School of Automation and Electrical Engineering</name>
</region>

3.judgement

作用是为了配合run项使用,设置不同的结果以及对应的类型,比如可以设置CE不算罚时之类的,注意这里需要能和你自己OJ的提交信息完全匹配上,或者你也可以只设置AC和WA两种状态,然后导出提交的时候处理一下映射。

<judgement>
    <id>1</id>
    <acronym>AC</acronym>
    <name>Yes</name>
    <solved>true</solved>
    <penalty>false</penalty>
</judgement>
<judgement>
    <id>2</id>
    <acronym>WA</acronym>
    <name>No - Wrong Answer</name>
    <solved>false</solved>
    <penalty>true</penalty>
</judgement>
<judgement>
    <id>3</id>
    <acronym>CE</acronym>
    <name>No - Compile Error</name>
    <solved>false</solved>
    <penalty>false</penalty>
</judgement>

4.language

judgement一样,主要是为了配合run使用。

<language>
	<id>1</id>
    <name>C</name>
</language>
<language>
    <id>2</id>
    <name>C++</name>
</language>
<language>
    <id>3</id>
    <name>Java</name>
</language> 

5.team

记录选手的相关信息,包括区域ID,team编号,名称

这里注意external-id一定要跟上面的region的external-id匹配上

<team>
    <id>87</id>
    <external-id>87</external-id>
    <region>School of Computer and Communication Engineering</region>
    <name>Yuncheng Wang</name>
    <university>Yuncheng Wang</university>
</team>  
<team>
    <id>108</id>
    <external-id>108</external-id>
    <region>School of Computer and Communication Engineering</region>
    <name>Jinkai Xue</name>
    <university>Jinkai Xue</university>
</team> 

6.problem

注意注意:这里的ID一定要是从1开始递增(踩过的坑

<problem>
	<id>1</id>
    <letter>A</letter>
    <name>Stones</name>
</problem>
<problem>
    <id>2</id>
    <letter>B</letter>
    <name>Practice of SUOAO</name>
</problem> 

7.run

run标签记录的就是所有选手的提交情况,对应提交的选手编号、对应题号、编程语言、结果、提交时间、比赛开始到提交经过的时间、是否解决、罚时…

judged需要全部为True,status需要全部为done,time比赛开始到提交经过的时间,其他的选项必须严格的匹配前面的标签,例如language、problem、team、result等

<run>
    <id>6</id>
    <judged>True</judged>
    <language>C++</language>
    <problem>2</problem>
    <status>done</status>
    <team>69</team>
    <time>471.309999</time>
    <timestamp>1512824871.31</timestamp>
    <solved>false</solved>
    <penalty>true</penalty>
    <result>WA</result>
</run>
<run>
    <id>7</id>
    <judged>True</judged>
    <language>C</language>
    <problem>4</problem>
    <status>done</status>
    <team>99</team>
    <time>494.562765</time>
    <timestamp>1512824894.56</timestamp>
    <solved>false</solved>
    <penalty>true</penalty>
    <result>WA</result>
</run> 

8.finalized

time直接设为0即可

timestamp是比赛结束时间的时间戳

last_gold,last_silver,last_bronze这三个指的是金牌、银牌、铜牌的最后一名是多少,比如sample中就代表金牌一个,银牌三个,铜牌五个

实际上设置的金银牌数量并没有生效,不过后面我们可以个性化设置

 <finalized>
    <last_gold>1</last_gold>
    <last_silver>4</last_silver>
    <last_bronze>9</last_bronze>
    <time>0</time>
    <timestamp>1512838800.0</timestamp>
</finalized> 

3.生成contest.json文件

在resolver根目录双击运行awards.bat

image-20221211144811616

很明显这里就有我在上面介绍过的从远程cds加载还是从本地文件加载

image-20221211144923800

我们选择从本机文件加载

image-20221211145054881

运行后的结果如下:

image-20221211145220217

右上方Add Awards,我们就可以自行添加awards的种类、数量等

以奖牌为例,这里奖牌的个数上限为10,怎么自行修改

image-20221211145349633

回到主页面选中,这里就可以为选手添加指定的award和备注(在滚榜程序中会以它展示)以及该奖项的展示方式

image-20221211151346676

image-20221211145542761

或者自定义奖项

image-20221211145833026

完成一系列配置就可以save生成json文件了

4.运行resolver.bat

最后一步就是来到resolver根目录运行

resolver.bat 你的json文件位置

image-20221211150216791

大功告成!按照上面的键盘快捷键操作就可以了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ICPC-TOOLs resolver滚榜单工具使用指南 的相关文章

  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • 如何自定义BlockingQueue的阻塞行为

    我想创建一个阻塞队列 它根据自定义规则而不是队列中的项目数量来阻止生产者 例如 生产者生成一些文件并放入队列中 消费者经过一番分析后将它们转移到特定位置 对于上述场景 如果队列中的总文件大小达到某个阈值 我希望生产者等待生成新文件 如果总大
  • Firebase 查询 Or'ing whereEqualTo 以获得可能值的列表

    我见过之前针对早期版本的 Firebase 提出过这个问题 https stackoverflow com questions 26700924 query based on multiple where clauses in fireba
  • JPanel透明背景和显示元素[重复]

    这个问题在这里已经有答案了 我插入一个背景图e 变成 aJPanel但一些界面元素消失了 以下 Java Swing 元素不会出现 标签标题 标签 usuario 标签 密码 按钮加速器 你能否使图像透明或元素不透明 setOpaque f
  • Java Swing:清除JList而不触发监听器

    我的情况如下 我有一个 JList 只要在列表中进行选择 它就会触发搜索 使用 ListSelectionListener 我正在尝试使用以下命令重置列表上的选择list clearSelection 这样做的问题是使用clearSelec
  • Java/JAXB:将具有相同名称但不同属性值的 XML 元素解组到不同的类成员

    我正在尝试根据其属性之一将具有多个 Fields 元素的 XML 解析为不同的类成员 这是 XML
  • 如何在Spring的applicationContext.xml中指定默认范围来请求范围?

    我想让所有 bean 请求默认作用域 但是 Spring 文档说默认作用域是 Singleton 第 3 4 1 和 3 4 2 节http static springsource org spring docs 2 5 x referen
  • JUnit Eclipse 显示 System.out.print() 的

    我正在使用 JUnit 3 和 Eclipse 3 4 当我运行 JUnit 测试用例时 一切正常并且测试完美完成 唯一的事情是我想查看我正在运行的类的输出 所有类都具有一些输出值的基本 System out print 因此 当我运行测试
  • 如何正确配置Tomcat SSLHostConfig?

    我正在按照本教程在 tomcat 中启用 ssl https medium com raupach how to install lets encrypt with tomcat 3db8a469e3d2 https medium com
  • 无法从后台服务通过 WiFi 访问互联网

    我将直接介绍我发现的一些事实 数据 如果您遇到 解决了类似的问题 请帮助我 我每 5 分钟向服务器发送一次数据 除非用户在服务器的帮助下手动将其关闭 wakeful broadcast receiver通过一个intent service
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • 独占锁定ConcurrentHashMap

    我知道不可能锁定 ConcurrentHashMap 进行独占访问 但是 我找不到原因 是因为构成CHM的 Segment 没有被api公开吗 据推测 如果是的话 客户端代码可以执行 交接 锁定 Cheers 我知道不可能锁定 Concur
  • Java 的 QP 求解器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • Java G1 GC 处理引用对象运行缓慢

    我已经在 J ava 上运行了计数器 它24小时工作 每秒点击通过100次左右 白天 GC 处理时间从 20 60 毫秒缓慢上升到 10000 60000 毫秒 然后下降到 20 60 毫秒 这种模式不时地重复 从 GC 日志中我发现 GC
  • java 属性文件作为枚举

    是否可以将属性文件转换为枚举 我有一个包含很多设置的属性文件 例如 equipment height equipment widht equipment depth and many more like this and not all a
  • 如何在将数据发送到 Firebase 数据库之前对其进行加密?

    我正在使用 Firebase 实时数据库制作聊天应用程序 我知道 Firebase 非常安全 只要您的规则正确 但我自己可以阅读使用我的应用程序的人的所有聊天记录 我想阻止这种情况 为此我需要一种解密和加密方法 我尝试使用凯撒解密 但失败了
  • 防止 Firebase 中的待处理写入事务不起作用

    我的目标是在单击按钮时将名称插入 Cloud Firestore 中 但如果用户未连接到互联网 我不希望保存处于挂起状态 我不喜欢 Firebase 保存待处理写入的行为 即使互联网连接已恢复 我研究发现Firebase 开发人员建议使用事
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和
  • 如何使用 Spring AOP 建议静态方法?

    在执行类的静态方法之前和之后需要完成一些日志记录 我尝试使用 Spring AOP 来实现这一点 但它不起作用 而对于正常方法来说它起作用 请帮助我理解如何实现这一点 如果可以使用注释来完成 那就太好了 也许您应该在使用 Spring AO

随机推荐

  • 求助,AttributeError: ‘Namespace‘ object has no attribute ‘input_df_filename‘

    import argparse import re import pandas as pd import os import json from pyxdameraulevenshtein import damerau levenshtei
  • 【EasyExcel】 模板填充批量导出,多文件以zip压缩包格式导出

    使用 阿里巴巴的 EasyExcel 填充 excel模板导出 需要支持批量操作 即一个模板循环导出多份 在网上找了下其他大佬们的做法 没有找到想要的 很多都是要先生成excel文件 再压缩导出 但我不想这样做 想直接通过文件流的方式 直接
  • 【计算机网络】湖科大微课堂笔记 p50-53 路由选择协议概述、路由信息协议RIP、开放最短路径优先OSPF、边界网关协议BGP的基本工作原理

    文章目录 路由选择协议概述 小结 路由信息协议RIP的基本工作原理 小结 一些例题 开放最短路径优先OSPF的基本工作原理 小结 边界网关协议BGP的基本工作原理 小结 一些例题 路由选择协议概述 因特网采用分层次的路由选择协议 域间路由选
  • 二叉搜索树(BST的理论剖析+代码实现)

    二叉搜索树 BST树 文章目录 二叉搜索树 BST树 1 二叉搜索树的概念 2 二叉搜索树的结构定义 2 1 二叉搜索树结点模板的定义 2 2 二叉搜索树类模板的定义 3 二叉搜索树的效率 4 二叉搜索树的默认成员函数实现 4 1 BST的
  • MapReduce作业状态一直为ACCEPTED解决过程

    toc 今天在测试Hadoop文件压缩功能时 在之前本地搭建的Hadoop集群上提交了一个MapReduce作业 但是提交后发现一直卡在那不动 18 07 20 17 21 50 WARN util NativeCodeLoader Una
  • Swagget技术·SpringBoot继承Swagger框架详解!

    文章目录 一 Swagger简介 二 SpringBoot集成Swagger 三 配置Swagger 1 Swagger实例Bean是Docket 所以通过配置Docket实例来配置Swaggger 2 可以通过apiInfo 属性配置文档
  • 基于电流采样运放的DCDC电源输出线损补偿电路的详细推导计算

    基于电流采样运放的DCDC电源输出线损补偿电路的详细推导计算 作者 TI 工程师 Kevin Zhang 当DCDC电源输出需要经过一根长线缆才能到达负载时 由于线缆的阻抗产生压降 会导致负载端电压小于实际DCDC输出电压 为保证负载端电压
  • Markdown基本语法

    Markdown基本语法 一 Markdown了解 二 基本语法 1 各级标题的写法 2 段落 3 字体样式 4 分隔线 5 下划线 6 脚注 7 列表 8 代码块 9 引用 10 图片插入 11 链接 12 表格 三 高级技巧 1 HTM
  • Air Video

    http baike baidu com view 8552809 htm 1 百度首页 登录注册 新闻网页贴吧知道MP3图片视频地图百科文库 帮助 首页 自然 文化 地理 历史 生活 社会 艺术 人物 经济 科技 体育 图片 数字博物馆
  • 翠竹林 Opencv+C++之人脸识别

    最近一直在忙课程 老师让我看看他的论文也没放在心上 总算闲下来 看了他在人脸识别方面的相关论文 拿出一篇放在博客上跟大家共同分析下 在看以下内容前 首先要阅读下徐勇老师的这篇论文 A Two Phase Test Sample Sparse
  • Python Timer定时器

    Timer是在threading模块下的 Thread类的派生类 它用于在指定时间后调用一个方法 Timer的构造方法 Timer interval func args kwargs interval 用于设置等待时间 func 要执行的函
  • node-npm 设置淘宝镜像

    1 安装 cnpm 淘宝镜像 npm install g cnpm registry https registry npm taobao org 2 将npm设置为淘宝镜像 npm config set registry https reg
  • swift项目桥接通过cocoapods pod下来的第三方oc文件引入不成功

    最近想试着开始写学着swift项目了 然后就在用cocoapods pod下来的第三方框架的时候出现了问题 先以为是自己创建桥接文件后 配置出错了 但是网上的那些文章都还是能把桥接文件处理好 言归正传 先上图 pod的文件和桥接header
  • 你与小程序开发的距离有多远?

    你与小程序开发的距离有多远 2017年1月9日凌晨 小程序正式发布 对焦10年前iPhone的发布时间 产品之神张小龙显然是想让这一天具有十分重要的历史意义 小程序发布之后 它终于揭开了最终面目 我们不得不承认 这一天 必定是一个新时代的开
  • Java的多态

    一 多态的概念 多态性是指同一操作或方法可以在不同的对象上具有不同的行为 它允许我们通过使用基类或接口类型的引用变量来调用子类或实现类的方法 二 多态的作用 多态性是面向对象编程中的一个重要概念 它可以让我们以一种统一的方式处理不同类型的对
  • Eureka初启动报错:{@org.springframework.beans.factory.annotation.Qualifier(value=httpTraceFilter)}

    学习Eureka时启动报错 之前写服务者消费者接口未报错 到启动Eureka时才发现有误 启动Eureka时报错 信息提示是 Dependency annotations org springframework beans factory
  • 合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间

    以数组 intervals 表示若干个区间的集合 其中单个区间为 intervals i starti endi 请你合并所有重叠的区间 并返回 一个不重叠的区间数组 该数组需恰好覆盖输入中的所有区间 示例 输入 intervals 1 3
  • nginx 反向代理到另一个nginx并在另一个ngixn上面做转发

    目录 一 背景 二 步骤 三 问题总结 一 背景 近期部署项目时遇到一个问题 由阿里云解析到一个公网iP 由该公网ip的nginx进行转发 但转发时 该项目为前后端分离 需要解析到远程服务器的xxx目录 这通过一个nginx转发不好解决 通
  • Linux 开发环境搭建与使用——SlickEdit 的安装与配置

    SlickEdit 的介绍 vim 是公认很好用很完美 但是对新手来说 上手毕竟不是很容易 Windows 下程序员很多都很喜欢Source Insight 这个工具来看代码 各种语法高亮看着很舒服 那在 Linux 平台下 有没有媲美 S
  • ICPC-TOOLs resolver滚榜单工具使用指南

    0 引言 上周突然临危受命 学校ACM社团要举办校内迎新赛 想要使用滚榜功能让揭晓结果变得更加刺激 奈何本人不打ACM 一开始连滚榜都不知道 苦笑 jpg 不过还是跌跌撞撞把功能实现了 介于网络上这方面的教程实在是凤毛麟角 我就把自己的经验