chen_zhe @ 2025-12-31 10:48:47
同步发表于个人专栏:https://www.luogu.com.cn/article/rirw60ze
2025 年 12 月的 GESP 在小红书等社区中被家长一再怒斥“乱出题”、“坑钱”。实际上,CCF 也确实承认了 GESP 3 级出现了显著的超纲,并且组织了退费或者重考(赠送小礼品)。除了 GESP 三级确实有问题之外,其他几个等级也被提出了几个争议点。接下来我们一个一个来看这些争议点是否值得被喷。
:::align{center} :::
诚然,判断题全都选择答案错误的话,很可能会在考试的效度上产生负面影响。但是我认为实际情况中它产生的影响并不显著:
更何况,如果进入初高中,在学校内组织的周测、月考等,都很有可能出现出题老师灵机一动,在选择题选项、判断题答案上整活。我个人就遇到过一张卷子 20 个选择题全部选 C 的情况(免责声明:我校 211 率 90+%)。
因此从我个人角度来说,10 个判断题全部选择错误其实是合理的,不会在区分优秀-合格-不合格上产生明显问题。最多只有一些边缘的,不稳的选手被卡掉,这是无法避免的。
部分家长诟病 GESP 4 级的答案代码为 AI 生成,具体如下:
:::align{center} :::
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
#include <assert.h>
using namespace std;
struct Item {
string name;
int price;
int priority;
};
bool cmp(const Item &a, const Item &b) {
if (a.priority != b.priority) return a.priority < b.priority;
if(a.price != b.price) return a.price < b.price;
return a.name < b.name;
}
string s[1005];
std::map<string, int> mp;
int main(){
int M, N;
cin >> M >> N;
Item items[N];
for (int i = 0; i < N; ++i) {
cin >> items[i].name >> items[i].price >> items[i].priority;
assert(mp.find(items[i].name) == mp.end());
mp[items[i].name] = items[i].priority;
}
sort(items, items + N, cmp);
int budget = M;
int count = 0;
for (int i = 0; i < N; ++i) {
if (items[i].price <= budget) {
budget -= items[i].price;
s[count++] = items[i].name;
}
}
sort(s, s + count);
for (int i = 0; i < count; ++i) {
cout << s[i] << endl;
}
return 0;
}
我的评价是,AI 写不出这么烂的代码。具体如下:
using namespace std; 之后再使用 std::;Item items[N];);这份代码确实不够好,但是不够好仅仅是因为它使用了 VLA,其他方面是没有问题的。当然也有一种可能是 AI 生成了出题/验题的代码,然后进行了人工调整。这可能也是有道理的。但是还有一些针对这个代码的喷点有点超出了我的认知:
assert 断言在竞赛中不常用。
那我认为你可能是选手代码看少了。
当然我个人认为,AI 答案其实构成不了太大的问题,包括 AI 出题如果能润色好也不存在明显的问题,因为 AI 有的时候确实可以提供很好的灵感来源。其实我个人甚至认为 CCF 出题的时候就没掩饰过用 AI 出题,我个人认为 CSP-J 2024 初赛 就有比较明显的 AI 特征,当然这套题目确实区分度有点拉跨了,是比较失败的卷子。
这是 GESP 5 级的大纲:
:::align{center} :::
这是 GESP 5 级的两个题目:
第一题:
小 A 有一个包含
N 个正整数的序列A=\{A_1,A_2,\cdots,A_N\} ,序列A 恰好包含N^2 对不同的正整数。形式化地,对于任意1 \le i \le N ,存在唯一一个j 满足1\le j \le N, i\neq j, A_i=A_j 。
小 A 希望每对相同的数字在序列中相邻,为了实现这一目的,小 A 每次操作会选择任意i(1\le i\le N) ,将当前序列的第i 个数字移动到任意位置,并花费对应数字的体力。
例如,假设序列A=\{1,2,1,3,2,3\} ,小 A 可以选择i=2 ,将A_2=2 移动到A_3=1 的后面,此时序列变为\{1,1,2,3,2,3\} ,耗费2 点体力。小 A 也可以选择i=3 ,将A_3=1 移动到A_2=2 的前面,此时序列变为\{1,1,2,3,2,3\} ,花费1 点体力。
小 A 可以执行任意次操作,但他希望自己每次花费的体力尽可能小。小 A 希望你能帮他计算出一个最小的x ,使得他能够在每次花费的体力均不超过x 的情况下令每对相同的数字在序列中相邻。
对于所有测试点,保证1\le N,A_i\le 10^5 。
第二题:
小 A 有一个包含
N 个正整数的序列A=\{A_1,A_2,\ldots,A_N\} 。小 A 每次可以花费1 个金币执行以下任意一种操作:
- 选择序列中一个正整数
A_i (1\le i\le N ),将A_i 变为A_i\times P ,P 为任意质数;- 选择序列中一个正整数
A_i (1\le i\le N ),将A_i 变为\frac{A_i}{P} ,P 为任意质数,要求A_i 能整除P 。小 A 想请你帮他计算出令序列中所有整数都相同,最少需要花费多少金币。 对于所有测试点,保证
1\le N,A_i\le 10^5 。
很明显,第一题考察的是二分答案,考察重点在于发现题目等价于把不超过
这两个题是否超纲呢?二分答案、初等数论、贪心都显然在大纲里面,在知识点上不超纲。而且每个题都只是比最基础的模板多套了一层,因此整体上应该无法评定超纲。得分较低的原因仅仅在于对于完全没有思路的人来说不太好写部分分。
实际上,CCF 明确表示了 GESP 低级别认证(1-4 级)适合作为青少年编程能力普及培养成果的验证工具,高级别认证(5-8 级)作为优秀青少年编程能力提升的测评工具,将衔接 CSP-J/S 认证。(https://gesp.ccf.org.cn/101/1019/10090.html)这两道题作为衔接 CSP 的试题我个人认为没有问题,两道题都在 CSP-J 第三题左右的难度(五级第一题可能稍低一些)。有人可能也会说今年 CSP-J 也就黄题封顶,那事实上 CCF 在自己的 CSP 考点分析中也明确指出了这次 CSP-J 难度不够。这两个题放在往年也确实不会超过第三题。
然而,从整体结构与区分度的角度来看,CSP-J 2025 的试题仍存在一定改进空间:(1)代码实现能力要求偏低。T1、T2 主要聚焦于基础 C++ 程序设计内容,T3、T4 则更多强调题意分析与算法应用,整体上对代码实现与程序设计细节的要求不足,难以充分区分综合能力更强的选手;(2)整体难度略低于往年平均水平。T1、T2 题目定位于入门组基础难度,T3、T4 所采用的算法模型相对经典、简易,对处于平均水平以上的选手区分度仍有待进一步提升。https://mp.weixin.qq.com/s/y40Q2fgVaPwgKLaXGo49mA
家长需要认识到 GESP 5 级以上开始面向竞赛,需要孩子学习更加灵活的思想思路,而非单纯的能力普及、兴趣爱好培养、套用算法模板。
以上是我对这次 GESP 在小红书等社区的常见争议的回答,因为很多争议点给我气笑了,因此忍不住写了一篇文章。
by my_dream666 @ 2025-12-31 10:49:31
qp
by _ATRI @ 2025-12-31 10:49:45
qp
by wanganze @ 2025-12-31 10:50:24
qp
by wsdyz2010 @ 2025-12-31 10:50:32
qp
by my_dream666 @ 2025-12-31 10:50:39
第一次抢到一楼!
by LegendaryMiracle @ 2025-12-31 10:50:58
居然又是一楼!
by HuangTian @ 2025-12-31 10:51:35
AI 写不出这么烂的代码
by Tiat_Siba_Ignareo @ 2025-12-31 10:52:28
/jy
by Lehe @ 2025-12-31 10:52:42
他都是小红书家长了
by dong0717 @ 2025-12-31 10:52:49
qp