红河州第三届中小学信息学联赛

秋季赛10月联赛详细分析报告

第一部分:比赛总体概况

235
参赛学生总数
18
参赛学校数量
5
参赛区域数量
101.98
整体平均分
400
最高分
44.7%
零分考生占比

一句话结论

10 月联赛(每组 4 题、每题 100 分、共 400 分),参赛 235 人, 平均分 101.98 分,较 9 月(96.49 分)提高 5.49 分;但零分率仍高达 44.7%, 平均分与中位数(10.00 分)差距巨大,说明成绩呈"少数高分、大量零分"的两极分化, 而不是整体水平普遍提升。

与 9 月联赛对比

指标2026年10月2026年9月变化
参赛学生235 人212 人+23 人
参赛学校18 所18 所+0 所
参赛区域5 个7 个-2 个
整体平均分101.98 分96.49 分+5.49 分
最高分400 分390 分+10 分
中位数10.00 分47.50 分—
满分(400)2 人0 人—
零分人数105 人(44.7%)99 人(46.7%)零分率基本持平

第二部分:成绩分布情况

未及格(0-30)

122人
51.9%

基础(31-100)

24人
10.2%

及格(101-150)

14人
6.0%

中等(151-200)

19人
8.1%

良好(201-250)

14人
6.0%

优良(251-300)

21人
8.9%

优秀(301-350)

5人
2.1%

顶尖(351-400)

16人
6.8%

分布特征

  • 0-30 分段 122 人,占 51.9%,是人数最多的区间;
  • 但同时 351-400 分段也有 16 人(占 6.8%),其中 2 人拿到满分 400 分;
  • 中位数只有 10.00 分,说明一半以上考生几乎没有拿到有效分数,整体呈明显的"哑铃型"。

第三部分:试卷结构与考点分析

本次联赛三个组别各 4 道题,每题 100 分,测试点等分(10 个测试点每点 10 分,20 个测试点每点 5 分), 共 400 分。所有题目均为文件输入输出(题目名.in / 题目名.out), 编译选项 -O2 -std=c++14 -static,时限 1.0 秒,内存限制 256MiB。

启蒙组(4 题 / 400 分)

题号题目名称目录测试点每题分值主要考点难度判断
1自动售货机vending10100 分(每点 10 分)贪心 / 整除取模基础
2数字根digroot10100 分(每点 10 分)数学规律 / 数位和基础
3歌单song10100 分(每点 10 分)去重保序 / 桶标记基础
4单词统计words20100 分(每点 5 分)字符串处理 / 哈希计数 / 字典序中等

入门组(4 题 / 400 分)

题号题目名称目录测试点每题分值主要考点难度判断
1最高积分score10100 分(每点 10 分)一次扫描 / 计数基础
2文本编辑器editor20100 分(每点 5 分)模拟 / 栈或链表中等
3零件加工parts20100 分(每点 5 分)二分答案中等
4木棍拼接sticks20100 分(每点 5 分)深度优先搜索 + 剪枝较难

提高组(4 题 / 400 分)

题号题目名称目录测试点每题分值主要考点难度判断
1连击得分combo10100 分(每点 10 分)模拟 / 64 位整数基础
2重复旋律melody20100 分(每点 5 分)字符串 / 后缀数组或哈希 + 二分较难
3数列递推recur20100 分(每点 5 分)矩阵快速幂较难
4骨牌覆盖domino20100 分(每点 5 分)状态压缩 DP / 插头 DP难

各题命题意图

  • 自动售货机(vending,启蒙组组):面额为 50、10、5、1 且互为倍数关系,从大到小贪心即可得到最少张数。
  • 数字根(digroot,启蒙组组):可以用数位和,也可以用数字根公式 1+(n-1)%9。
  • 歌单(song,启蒙组组):开一个长度 1001 的标记数组,边读边输出第一次出现的编号。
  • 单词统计(words,启蒙组组):按非字母字符切词,用哈希表计数,再按次数与字典序取最优。
  • 最高积分(score,入门组组):边读边维护最大值与出现次数,注意 n 到 1e5、ai 到 1e9。
  • 文本编辑器(editor,入门组组):光标两侧各用一个栈(或双向链表),插入删除都在栈顶完成。
  • 零件加工(parts,入门组组):在时刻 T 的产量是 Σ⌊T/ti⌋,随 T 单调,二分最小满足条件的时间。
  • 木棍拼接(sticks,入门组组):枚举总长的约数作为目标长度,从长到短放木棍,配合等长跳过、首根失败即回退等剪枝。
  • 连击得分(combo,提高组组):维护当前连击长度,答对累加连击数、答错清零;总分需用 long long。
  • 重复旋律(melody,提高组组):二分答案 L,判断是否存在长度为 L 的重复片段(可重叠),可用哈希或后缀数组。
  • 数列递推(recur,提高组组):构造 k 阶转移矩阵,用矩阵快速幂把 O(n) 降到 O(k³ log n)。
  • 骨牌覆盖(domino,提高组组):按行(或按列)状态压缩转移,长宽较大时再套矩阵快速幂。

难度梯度

启蒙组 3 道基础题 + 1 道字符串计数题,主要考"能不能把程序写对"; 入门组在基础题之外出现了二分答案(parts)与搜索剪枝(sticks)两个分水岭; 提高组四题分别落在模拟 + 64 位整数(combo)、字符串算法(melody)、矩阵快速幂(recur)、状态压缩 DP(domino), 区分度集中在后两题。整体上本次试卷比 9 月更强调"算法选择",而不是单纯的代码熟练度。

第四部分:按组别统计分析

启蒙组

参赛人数:59人
学校数量:10所
平均分:25.68分
中位数:0.00分
最高分:355分
零分人数:44人
9月平均分:44.26分

入门组

参赛人数:145人
学校数量:8所
平均分:126.07分
中位数:100.00分
最高分:400分
零分人数:49人
9月平均分:94.08分

提高组

参赛人数:31人
学校数量:3所
平均分:134.52分
中位数:120.00分
最高分:395分
零分人数:12人
9月平均分:155.28分

组别差异

  • 入门组(145 人,平均 126.07 分)是参赛主体,也是本次成绩最好的一组,并产出了 2 个满分;
  • 提高组(31 人,平均 134.52 分)人数最少但平均分最高,说明坚持参赛的多为强手;
  • 启蒙组(59 人,平均 25.68 分,零分 44 人)问题最突出,近四分之三的考生没有拿到有效分数, 与启蒙组"刚接触编程"的实际水平相符,但也反映教学与训练需要调整。

第五部分:奖项分布情况

奖项人数平均分占比分析说明
一等奖27人350.74分11.5%顶尖水平,4 题基本完整拿下
二等奖39人224.23分16.6%良好水平,具备扎实的竞赛基础
三等奖41人127.20分17.4%中等水平,能稳定做出部分题目
不设奖99人5.40分42.1%未达到设奖分数线,多为部分得分或零分
未完赛29人0.00分12.3%未完成比赛或未有效提交

关键观察

五个奖项的平均分呈现非常清楚的阶梯:一等奖 350.74 分、二等奖 224.23 分、三等奖 127.20 分, 而不设奖 99 人平均只有 5.40 分。也就是说,奖项与得分高度一致, 本次评奖的区分度是可靠的;问题不在评奖口径,而在近六成考生(不设奖 + 未完赛)几乎没拿到分。

第六部分:区域分布情况

区域参赛人数学校数量平均分最高分零分人数获奖人数分析说明
蒙自市133人6所152.44分400分40人88人表现优秀,规模大、成绩突出,建议发挥示范引领作用
开远市54人3所22.41分275分39人7人零分比例偏高,建议从基础语法与文件读写规范抓起
建水县21人2所55.71分265分10人5人具备一定基础,建议加强师资培训与尖子生培养
个旧市14人4所66.43分300分8人5人具备一定基础,建议加强师资培训与尖子生培养
弥勒市13人3所29.23分170分8人2人零分比例偏高,建议从基础语法与文件读写规范抓起

区域格局

蒙自市以 133 人、平均 152.44 分的规模和质量全面领先,获奖 88 人占全州 82.2%; 开远市参赛 54 人但平均仅 22.41 分、零分 39 人,是本场最需要关注的区域; 建水县参赛 21 人平均 55.71 分,较 9 月(30.20 分)有所提高。 元阳县、金平县本月没有参赛记录,与 9 月相比覆盖面收窄。

第七部分:学校表现排名

排名学校名称参赛人数平均分最高分零分人数获奖人数积分
第1名蒙自市第一高级中学84228.45400477人(一等24/二等29/三等24)4330
第2名云南省建水第一中学2058.5026595人(一等0/二等3/三等2)190
第3名蒙自市银河小学1145.0035573人(一等1/二等1/三等1)170
第4名开远市第一中学5123.73275367人(一等0/二等1/三等6)170
第5名个旧市和平小学586.0030032人(一等1/二等1/三等0)150
第6名蒙自市第一小学1121.8215083人(一等1/二等0/三等2)140
第7名蒙自市惠民小学2010.00100173人(一等0/二等2/三等1)120
第8名个旧市第一中学初中部681.6726033人(一等0/二等1/三等2)90
第9名蒙自市凤凰小学625.0010032人(一等0/二等1/三等1)70
第10名弥勒市第一中学745.7117042人(一等0/二等0/三等2)40
未获积分弥勒市朋普中学230.004500人(一等0/二等0/三等0)0
未获积分个旧市第一中学25.001010人(一等0/二等0/三等0)0
未获积分蒙自市团结小学10.00010人(一等0/二等0/三等0)0
未获积分建水县面甸镇面甸小学10.00010人(一等0/二等0/三等0)0
未获积分开远市东城小学20.00020人(一等0/二等0/三等0)0
未获积分个旧市和平小学大屯校区10.00010人(一等0/二等0/三等0)0
未获积分开远市泸江小学校10.00010人(一等0/二等0/三等0)0
未获积分弥勒市西山民族中学40.00040人(一等0/二等0/三等0)0

排名说明

排名方法:采用获奖积分排名法,一等奖 100 分、二等奖 50 分、三等奖 20 分,同分按平均分降序。

  • 综合考虑获奖数量与质量,避免"参赛人数少的学校平均分高"造成的偏差;
  • 突出高奖项价值,鼓励学校培养尖子生;
  • 零分人数单独列出,便于识别"有人参赛但整体没拿分"的学校。

本次最大特点:蒙自市第一高级中学积分 4330,是第二名(190)的 22.8 倍, 参赛 84 人中有 77 人获奖、平均分 228.45,形成压倒性优势;其余 17 所学校积分全部在 200 分以下, 校际差距比 9 月进一步拉大。

第八部分:逐题提交与完成情况

基于学生提交的代码目录统计(共收到 210 个考生的代码文件夹,与成绩表匹配 207 人)。 "提交人数"指代码目录中存在该题源文件的人数,"文件读写"指使用 freopen / fopen 按题目要求读写文件的程序数量。

启蒙组(在册 59 人,收到代码 48 人)

题目提交人数占在册占提交者正确文件读写无文件读写代码行数中位数提交者中零分
自动售货机(vending)39 人66.1%81.2%32 人7 人23 行26 人
数字根(digroot)39 人66.1%81.2%29 人10 人17 行24 人
歌单(song)31 人52.5%64.6%22 人9 人12 行19 人
单词统计(words)31 人52.5%64.6%24 人7 人10 行19 人

入门组(在册 145 人,收到代码 135 人)

题目提交人数占在册占提交者正确文件读写无文件读写代码行数中位数提交者中零分
最高积分(score)132 人91.0%97.8%122 人10 人20 行36 人
文本编辑器(editor)124 人85.5%91.9%106 人18 人34 行35 人
零件加工(parts)119 人82.1%88.1%104 人15 人26 行32 人
木棍拼接(sticks)114 人78.6%84.4%96 人18 人22 行29 人

提高组(在册 31 人,收到代码 24 人)

题目提交人数占在册占提交者正确文件读写无文件读写代码行数中位数提交者中零分
连击得分(combo)24 人77.4%100.0%24 人0 人22 行5 人
重复旋律(melody)22 人71.0%91.7%21 人1 人44 行4 人
数列递推(recur)19 人61.3%79.2%19 人0 人36 行3 人
骨牌覆盖(domino)16 人51.6%66.7%16 人0 人39 行2 人

提交行为分析

  • 提交率随题目顺序下降。入门组与提高组都很明显: 入门组 score 91.0% → sticks 78.6%,提高组 combo 77.4% → domino 51.6%, 启蒙组也基本如此(vending 66.1% → words 52.5%)。说明不少考生是按顺序做、做不出来就放弃、也没有建立文件夹。
  • 启蒙组提交率最低。vending、digroot 都只有 66.1%,song 与 words 更降到 52.5%, 近一半在册学生没有留下对应题目的代码。
  • 有考生交了代码却没有写文件读写。启蒙组 自动售货机 有 7 人;启蒙组 数字根 有 10 人;启蒙组 歌单 有 9 人;启蒙组 单词统计 有 7 人;入门组 最高积分 有 10 人;入门组 文本编辑器 有 18 人;入门组 零件加工 有 15 人;入门组 木棍拼接 有 18 人;提高组 重复旋律 有 1 人。 这些程序在评测机上读不到输入,必然 0 分,是最可惜的失分原因之一。

第九部分:样例数据实测结果

使用试卷随题提供的样例数据(editor5 / parts4-5 / sticks4-5 / melody4-5 / recur5-6 / domino5-6), 用 g++ -std=c++14 实际编译并运行考生提交的代码。注意:样例中包含大数据点 (editor5 输入 599KB、parts5 输入 1.1MB、melody5 输入 200KB),能筛掉低效算法,所以"样例全过"比表面看起来更难。

题目收到文件无源文件编译失败可运行运行错误/超时样例全过部分通过输出全错样例全过率
文本编辑器(editor)12461999222005716.9%
零件加工(parts)11971696332343620.5%
木棍拼接(sticks)1149149172665224.8%
重复旋律(melody)220715833113.6%
数列递推(recur)190415730515.8%
骨牌覆盖(domino)160214450531.2%
合计414226233081801315624.2%

提交到结果的五个漏斗环节

  • 收到 414 份题目文件(6 道有样例的题);
  • 其中 22 份只有文件夹、里面连源文件都没有(只有 .exe/.out 或空目录),等于没交;
  • 剩下 392 份源码中,62 份根本编译不过(占 15.8%,换用 c++11/gnu++14 重试也全部失败,属于真实编译错误);
  • 能编译的 330 份里,81 份运行超时(占 24.5%);
  • 最终只有 80 份全部样例通过,占可运行程序的 24.2%。

编译失败原因归类

62 份编译失败的提交中,几乎没有"高深"问题,绝大多数是拼写和语法问题:

原因数量
头文件包含写错(如 bits/std c++.h、ionstream)14
数组/模板/类型写法错误12
语句写在函数外、括号分号缺失11
变量/函数未声明(如 a、c 未声明)9
其它错误7
预处理指令拼错(#inculde、#incter)6
链接失败(缺少 main 等)2
文件过大导致编译器内存不足1

几个真实例子(可直接作为下次培训的反面教材)

  • #include <bits/std c++.h>:c++ 后面多了一个空格,直接报 "No such file or directory";
  • #inculde/#incter:include/printf 拼错成别的字母;
  • #include <stds/c++>、#include <ionstream>:头文件名记错;
  • 'a' was not declared in this scope:变量名拼写与声明不一致;
  • stray '\' in program:把中文全角符号或反斜杠误写进代码。

效率问题:样例过了也可能超时

比赛时限是 1.0 秒。本次实测一共有 179 次样例运行判定为"通过",其中 25 次实际耗时超过 1 秒 (最慢的接近 3 秒)。比较典型的是 parts:33 份超时的程序中,有 18 份存在双重循环, 也就是用暴力枚举代替了二分答案;editor 的失败原因更分散,既有用字符串拼接实现插入导致 O(n²) 的, 也有光标移动逻辑写错、读入判断失误造成的死循环。这类程序在小样例上能得出正确答案, 但在评测的大数据点上会大量失分——这也解释了为什么有些考生"自测样例全过"却只拿到几十分。

实测结论

把"零分"拆开看,原因是分层的:没交(无源文件)→ 交了编译不过 → 编译过了跑崩 → 跑通了答案错 → 对了但太慢。 本次零分考生里,大部分人卡在前两级——这与"算法不会"关系不大,而是基本的工程习惯没有养成: 文件名、头文件、括号、文件读写、以及"先在本机跑通样例再交卷"。

第十部分:提交规范与代码质量问题

从 210 个代码文件夹中,共发现 31 条不符合提交规范的问题, 另有 9 个无法识别的目录(如"新建文件夹"、其它练习题目目录等)。

问题类型数量说明影响
题目目录名不规范13 条如写成 wending、patrs、 sticxs、socre,或写成 vending.cpp 这样的目录名 若按目录名自动评测会直接判为未提交
源文件名不规范18 条如 未命名1.cpp、HIL202.cpp2.cpp 同上,评测机按固定文件名读取,读不到即 0 分
无法识别的目录9 个新建文件夹、irrigate、math、study、time、新建文件夹 (2)、新建文件夹 (3)、新建文件夹 (4)包含其它练习题目或空目录,需人工确认
空程序5 个源文件有效代码少于 3 行交了一个空文件,必然 0 分

提交工整程度与成绩的关系

提交题数人数平均分最高分零分人数
0 题38 人0.00 分0 分38 人
1 题21 人34.76 分100 分11 人
2 题22 人37.73 分195 分14 人
3 题13 人125.38 分260 分3 人
4 题141 人147.34 分400 分39 人

两个必须正视的事实

  • 交了 4 题也可能 0 分。提交满 4 题的 141 人里仍有 39 人得 0 分, 说明"把四道题的文件夹都建了"并不等于"写出了能运行的程序", 相当一部分提交是空文件、编译不过、或没有写文件读写。
  • 少交题不等于低分。提交 1-2 题的同学里也有人拿到 100-195 分, 说明做对一题比潦草交四题更有价值,训练中应强调"做一题、对一题"。
  • 29 人在成绩表中记为"未完赛",其中 28 人在代码汇总目录里确实没有任何提交; 另外 10 人有目录但四题都没交上,等于白来一趟。

第十一部分:比赛总结与建议

总体表现

本次 10 月联赛共 235 人参赛,来自 18 所学校、5 个区域, 平均分 101.98 分(9 月为 96.49 分),最高分 400 分,共有 2 人拿到满分。 试卷改为每组 4 题、每题 100 分的新结构,题目更强调算法选择(二分、搜索剪枝、矩阵快速幂、状态压缩 DP), 区分度明显提高。

主要亮点

  • 头部水平保持稳定:2 人满分、27 人获一等奖,一等奖平均 350.74 分, 说明高水平选手已能完整应对新题型。
  • 入门组整体提升:入门组平均 126.07 分,比 9 月的 94.08 分提高 31.98 分, 参赛 145 人仍是主力。
  • 建水县进步明显:建水县平均分从 9 月的 30.20 分提高到 55.71 分。
  • 提交率整体较高:入门组四题提交率均在 78.6% 以上,说明多数考生按题意建立了规范的题目目录。

主要问题

  • 零分率 44.7%(105 人),是本次最严重的问题。 其中 28 人连代码文件夹都没有,39 人虽然交了 4 个文件夹却一分未得。
  • 文件读写不规范是隐形杀手。至少 95 份提交没有使用 freopen/fopen,在评测机上读不到输入,直接 0 分——这类失分完全可以通过考前演练避免。
  • 提交命名不规范 31 处。题目目录或源文件名写错(如 wending、patrs、未命名1.cpp), 若按自动评测判题会被当作未提交。
  • 区域差距继续扩大:蒙自市平均 152.44 分,开远市仅 22.41 分, 后者参赛 54 人、零分 39 人。
  • 启蒙组基础薄弱:平均 25.68 分、零分 44 人, 贪心、数位和这类入门题仍有大量考生无法完成。

改进建议

  • 考前统一演练文件读写。把 freopen 作为第一次课的固定模板, 要求所有提交都在本机用"题目名.in"自测通过后才交卷。
  • 规范提交目录与文件名。发布统一的提交模板文件夹(题目名全小写、源文件名与题目同名), 考前用检查脚本核验一遍。
  • 分层教学。启蒙组以"读入-计算-输出"三件套为主,先把按时开考、按名建目录、 按题目要求输出格式做对;入门组重点补二分答案与搜索剪枝;提高组集中攻克矩阵快速幂与状压 DP。
  • 关注开远市等薄弱区域。建议安排骨干教师送教,重点解决"参赛人数不少但几乎不得分"的问题。
  • 建立"样例自测"机制。本次试卷为每道题都提供了 4-6 组样例, 建议要求考生赛后提交"样例自测记录",把"能编译、样例过"作为交卷门槛。