SDUTACM 14届校赛总结

SDUTACM 校赛总结

山东理工大学每年都会定期组织一次校赛,到今年为止共组织了 14 届校赛比拼。本文是对 14 届校赛中的一些规则和前期准备事项的总结和记录

奖项设置

比赛主要分为专业组(包含参赛研究生)和非专业组两个类别。两个分组的获奖要求有略微的差异,但整体上都符合满足,获奖人数占有效参赛人数(至少解出一道题)的百分比(金银铜奖比例分别为 10%、20%、30%)

专业组

专业组:计算机相关专业,包含计算机学院大多数专业,包括但不限于计算机科学与技术、软件工程、大数据计算等专业(通信工程归为非专业组)

获奖要求:

  1. 有效参赛人员排名的前 60% 皆可获奖(金银铜奖比例为:10%、20%、30%)计算方式:有效参赛人数 N(金:N * 10%,银:N * 30% - 金,铜 * 60% - 金 - 银),结果向上取整
  2. 研究生排名混入专业组,但并不算入专业组的排名榜单,仅根据研究生在专业组中的排名位置发放奖励

非专业组

非专业组:除专业组外的其他专业皆为非专业组

获奖要求:

  1. 有效参赛人员排名的前 60% 皆可获奖(金银铜奖比例为:10%、20%、30%)计算方式:有效参赛人数 N(金:N * 10%,银:N * 30% - 金,铜 * 60% - 金 - 银),结果向上取整
  2. 在符合要求 1 的情况下,还需满足获奖选手解出题目数不能比获得同奖项的专业组最后一名解出的题目数少超过 1 题。获奖数不向下顺延。例如:专业组金牌最后一名解出 5 道题目,非专业组金牌最后一名最少需要解出 4 道题,若在满足要求 1 但不满足要求 2,则降级为银牌且不额外增加银牌的获奖数量,获奖数量最多为 10%、20%、30%。

比赛题目

校赛比赛主要是针对校内学生,大部分人都是没有竞赛经历,所以对于竞赛的一些规则并不是十分熟悉,为了能够让学生的水平更容易体现出来,也能对学生的能力有一个更清晰的划分。建议在题目难度层级划分方面需要多做一些工作

热身赛

热身赛的主要目的有以下 4 点:

  1. 参赛选手熟悉场地机器
  2. 让工作人员能见到大部分的参赛选手,对正式赛有一个合理的预估。提前准备好各种事物
  3. 对比赛使用机器的一个验证,防止正式比赛时,因机器场地等原因出现问题
  4. 对服务器性能和各系统的准备进行一个验证,确保比赛当天能够正常提供

介于以上问题,热身赛题目需要尽量简单,不应有过难的题目打击到参赛选手导致放弃正式比赛。随机数题目,让选手能够提交更多的代码,在较少的用户下测试出服务器的性能问题,防止比赛时因服务器问题导致比赛无法正常进行

正式赛

题目难度建议划分为五个等级,分别对应:Lv1(签到题)、Lv2(简单题)、Lv3(中等题)、Lv4(困难题)、Lv5 (地狱题)

题目难度

根据计算机知识能力方面,以上五个等级的对应关系建议为: Lv1:一两层 for 和 if 的组合使用。如:冒泡排序等 Lv2:多层 if 或 for 嵌套组合使用,主要考察是否形成了清晰的代码逻辑和编写代码的能力。如:螺旋打印、较为复杂的图形打印等 Lv3:需要用到程序设计基础 2 和简单的数据结构的题目,主要考察较长代码的编写能力和思维转化能力。如:复杂的结构体根据多个条件计算数据、链表题、斐波那契这种思考规律题等 Lv4:复杂的数据结构和初级、中级算法题目 Lv5:高级算法题目,难度自由发挥

注: Lv1-Lv3 的题目设计需要着重考虑非专业组学生的能力水平,Lv4-Lv5 重点考察专业素质较强的学生。为了避免有某个选手过强导致题目快速 AK 建议提前了解选手的能力。每个等级的多道题目也应有难度差异

根据学生的能力方面,以上五个等级的对应关系建议为: Lv1:无 Lv2:非专业组大一或大二的学生(刚接触编程知识) Lv3:专业组大一或非专业组大三大四或参加过集训训练一期的学生(编程知识已经有了一定的积累) Lv4:专业组大二大三或参加过多期集训的学生(编程能力基本完全掌握,开始学习高阶算法) Lv5:当前集训队队员(正在学习高阶算法或有了一定的积累)

题目数量

比赛题目不同难度的题目数设置建议如下表

10 题12 题
Lv111
Lv223
Lv334
Lv422
Lv522

运维准备

  • 竞赛平台
  • 榜单、滚榜系统
  • 服务器检测

任务清单

  1. 榜单系统和滚榜合并
  2. 榜单支持题目自适应变化,当有题目新增或删除时,可以自动更新或快速触发
  3. 支持队伍展示时,动态展示队伍,可以对未参赛或封禁用户进行不展示
  4. 支持多种榜单展示,对于需要封榜的比赛提供两个榜单(正常封榜,和非封榜榜单)