首页 > 编程语言 >谈一谈编程到底应该怎么学?-暨2023年 CSP-J2轮爆零总结

谈一谈编程到底应该怎么学?-暨2023年 CSP-J2轮爆零总结

时间:2024-08-04 09:50:22浏览次数:10  
标签:推导 爆零 出来 编程 J2 学生 2023 100 复赛

谈一谈编程到底应该怎么学?-暨2023年 CSP-J2轮爆零总结

转自 https://mp.weixin.qq.com/s/_Fi64pYrZ6tHfKaNDb3xAA

今年的信息学奥赛复赛结果已经基本出来了,整个行业讨论最多的就是今年的爆0问题。据说一个省,总共1900多人参加J组复赛,有800个0分。

其它各省也都是爆0 很多。但是同时呢,高分段选手也变多了。

这背后到底隐藏着什么原因?

首先我们来看下 信息学奥赛复赛和我们的传统中考,高考有什么区别?

中考,高考都是120分或者150分制,有选择题,填空题,应用题等,题型多,题目数量多,难度分布均匀,给了不同阶段学生不同展示的机会。

所以一般来讲,对于150分,或者120分的卷子来讲,你拿到:108分或者135分才能算优秀。

但是信奥不一样,信奥复赛无论是J组还是S组,都只有4个编程大题,时间是3.5小时/4小时,每题100分,也就是说一共只有4个题,每个题会有十几个,几十个测试数据用例,比如一共100分,假如这题一共有10个测试用例,那么你每提交通过1个测试用例就得10分;但是很多情况对于一个编程题来讲,你可能都会了,那么就是100分,也有可能不会,只能0分;这个0分的概率也是非常大的。

介绍完了基础,我们来重点看看今年的J组题和去年有什么区别?

去年2个题,第1题和第2题相对简单,只要学了几个月的学生,如果还可以,就有可能做出来。虽然拿满分100分比较难,但是每一题拿个几十分是比较容易的。

然后呢,我们再来看看初赛,初赛呢是这么回事,很多年前初赛也是有填空题的,但是填空题阅卷太麻烦呀,所以为了提高效率, 现在就改成 全部选择题+判断题了。也就是说100分的卷子是这样划分的:

1)单选题 15个,一共30分 乱填答对概率:0.25
2)阅读程序题:

A:单选题:8个:一共24分 : 0.25
B:判断题:9个 一共 16分 : 0.5
3)完善程序: 单选题:10个,一共30分 0.25

我们来统计一下你全部随机填写平均多少份:

840.25 + 160,5= 29分

也就是说,你什么也不会,随便乱填,也有29分。然后我们看下今年 初赛一些弱省的晋级分数是大概是多少?

海南云南青海,甘肃:最高的38分,最低的20分就晋级了。

那么是不是会导致 一堆学了几个月的,或者说压根不具备编程能力的学生懵到复赛了?

那么再回到上面复赛,假如你学了3个月,以40分的高分晋级了。正好你学了一点编程皮毛。那么遇到2022年的复赛,2个题相对简单,被你每题拿个50分,是不是可能100分就被你拿到了?

100分今年弱省是一等奖水平呢,大家想一下。按照去年的情况,每个题你蒙40,80分。那也是80分,弱省也是二等奖水平呢。

但是这个奥赛二等奖,一等奖很显然对于 国家来说,对于CCF来说,对于重点高中来说,是没有价值的,没有起到要给筛选的作用。

但是今年就不一样了

今年4个题

第一题: 啥算法也不考,数组也不用,但是对于学生的思维能力要求很高,如果你只是按照老师的题去按部就班做(指的是老师讲了做,自己听懂了,模拟),从来不去钻研一些题,那么对于今年第一题肯定做不出来,几年结果出来,很多学了1年多的第一题也没做出来,而且是0分;这个题出的太好了,杜绝了投机份子,我认为这才是信奥应该出的题类型

第二题:用了一点点贪心算法。做出来也不容易,难度还在第一题上面一点点。所以没有经过一年的学习,没有达到GESP-4级水平,那做不出来也是大概率事件

第三题:第3题就比较变态了,考了一个 初中代数求根公式,不太难,但是很繁琐,就跟我们中考高考遇到的有些题,难度不高,但是计算的过程非常繁琐,需要你有耐心,需要你强大的编码能力。不然看都看不懂。这样的题你没有经过系统学习,没有初中代数功底,能做的出来?

第四题:第4题就难了,是真正的精英才能做出来的,今年的姚班和交大ACM班的杜老师和沃老师直播讲题就说了:这题无论从什么角度,都属于难题,他们手撕 都得捻把汗。最后小图灵统计做出来的只有0.1%都不到的概率

这么看下来,是不是你可以拿到分的也只有第1题了?第1题今年就不太容易做出来。所以是不是爆0就非常正常了。

所以我们通过这次复赛来看,我们总结出一个道理,这是我作为老师一直跟学生跟家长强调的几点:

1)编程不能急功近利,需要稳打稳扎,第一年都是做炮灰的,认真学习2年,大概率会出成绩。

2)编程需要系统性学习,它对学生逻辑思维能力、处理细节的能力高要求非常高,是一个极度锻炼学生思维与耐力的学科。

3)学习编程,学生不能一遇到问题马上就问,一问老师就看下告诉问题所在。不能跟做学校里的作业一样,需要鼓励学生钻研,鼓励学生遇到问题去排查去解决,确实思考了,想不出来了,老师可以提醒下,学生继续思考。这才是学习编程的根本方法。

我高中的时候学习编程,一个题想一个月呢,然后再做出来的,每天晚上睡觉了,脑子还在想思路,这样的思考过程对于学生就是很大的提升。

4)编程里面有很多的特殊处理方法,很多高难度技巧,这些实际上都不用去教的,只要教基础就行了, 特殊技巧都是孩子自己摸索出来的,比如说:二分法为了防止溢出不能直接写成:(l+r)/2,比如说:生成回文数的方法 等等各类技巧。你告诉学生了,学生背一下就会了,但是不理解背后的原理有什么用。。当然了,我也承认,临考前2个月教一些技巧也是有必要的,咱毕竟是为了考试。

5)老师的教学得讲原理,讲推导,比如说以一本通启蒙篇里面的很多题目,我们都知道是拿了奥数题过来的,但是变成了编程题,要么学生直接学过奥数,直接有公式知道怎么解,否则,就需要引导学生去自己拿笔做草稿去推导整个过程。很多公式不是直接口算出来的,是推导出来的,哪怕是选择排序算法,也推导出来的。

如下几个都需要讲解推导过程:1)不大于N能被K整除的最大数 2)牛吃草问题 3)整数回文 逆序推导 3)选择排序算法推导 4)二分推导

6)学生应该如何做编程题? 我最近发现很多学生做编程题都是直接看题直接写代码的,有那么容易吗?编程题是集合了数学应用题,计算题,强逻辑思维,还有计算机科学的题,很多题都是找规律,需要学生平时养成拿起草稿纸和笔 通过自己列举数字,找出规律(今年的小苹果第一题就是这样的,需要草稿纸上画圈,去演练:输入N与每一轮的关系,看看是余数关系还是其它关系)

当然,很多方法,对于学生来讲,需要一遍又变的强调,慢慢练习,这个也看学生的,如果是小学生,确实难度较高,养成习惯非常重要。如果是初中生,那就必须严格按照要求来。

  1. 还有一个很重要的就是 平时教学生是否需要强调命名规范,我认为很重要,比如说: 循环自增变量一般都用:i,j,k, 求和一般都用sum,临时用temp,动规一定用DP,多个就用DP1,DP2,必须遵循规范,不然有些程序学生今天洗完,过几天自己都看不懂了。老师因为变量乱命名,也会导致难以帮助学生一眼看出问题。所以这个问题是需要一直强调的,至少我每次上课都会强调。

8)跟家长是否需要实话实讲,那必须呀。对于家长不能乱吹牛,得诚实告诉他们:奥赛是有难度的,需要踏踏实实学,第一年可能拿到奖的概率很小,但是只要学生稳步在进步,坚持几年就会出成果,当然家长会根据孩子自己的能力和 中考的时间点去把控。对于有些接受能力弱的孩子或者说年龄较小的孩子来讲,那么就跟家长沟通好,一周一次课就可以了,慢一点。不着急追求成绩。因为哪怕有些孩子天赋还不错但是毕竟只有3年级4年级,这个也不用急的。他们是用时间换了空间。未来出成绩的概率非常大。

对于一部分接受能力强的学生来讲,就应该安排双周课,多学一点,这个时候不学什么时候学呢,对吧。如果一个小学5年级以下学生学习一年C++,可以通过GESP5级,那么我认为就已经是达标了。而且很OK 了。因为再过2年到7级,你就大概率可以获得CSP-J一等奖了。强省的CSP-J一等奖那可是很厉害的水平,无论到哪里,都是算很不错的。

最后,也告知一下今年爆0的家长,如果你家一年编程都没学满,爆0你一点也不要惊讶。。真的。

今年有个初赛82分的复赛还爆0呢。。

爆零不怕,怕的是:学习方法不对,怨天尤人。

带着一个良好心态去让学生学习编程才是正解。编程带给学生未来的希望是很大的。最近5年,中国最火爆的专业就是计算机科学与技术,真是笔者大学就读专业。

笔者跟大家一样,靠着学习编程, 在上海扎根落叶。 在一线城市,未来还是靠计算机,计算机靠AI,想要从事AI领域,编程是第一关。

未来会编程就像10年前人人都需要会OFFICE一样。所以我们学编程,也不仅仅是为了竞赛。

标签:推导,爆零,出来,编程,J2,学生,2023,100,复赛
From: https://www.cnblogs.com/lwp-nicol/p/18341476

相关文章

  • CVE-2023-26469 复现
    题目描述:Jorani是一款开源的员工考勤和休假管理系统,适用于中小型企业和全球化组织,它简化了员工工时记录、休假请求和审批流程,并提供了多语言支持以满足不同地区的需求。在Jorani1.0.0中,攻击者可以利用路径遍历来访问文件并在服务器上执行代码。这是一个csrf的洞,找了一下,......
  • 2023.8.3 test
    A有序列\(A\),你可进行若干次操作:选定\(A_i,A_j\),使\(A_i=\gcd(A_i,A_j)\),\(A_j=lcm(A_i,A_j)\)。\(n,A_i\le10^6\)。把每个质因数独立开,发现无论怎么操作,每个数某质因数的次数的集合不变。所以贪心地,从大往小放置\(A_1\simA_n\)。B无向图上,\(n\le20\),你要随机起点走......
  • 塔子哥的最短区间-小米2023笔试(codefun2000)
    题目链接塔子哥的最短区间-小米2023笔试(codefun2000)题目内容塔子哥有一个长度为n的数组a和长度为m的数组b,下标均从1开始。现在,塔子哥想让你找出一个最短的区间l,r,这个区间中数x的数量至少出现了b[x]次。输入描述第一行,两个整数n,m(......
  • [lnsyoj2233]咏叹
    题意给定\(n\)行\(n\)列的网格地图\(g\),包含空地(.)和障碍(#),其中包括玩家(P)和敌人(E)。敌人会按照玩家\(k\)回合前的操作进行移动。记移动到边界外或障碍上为移动失败,移动失败后,此移动不作数。求玩家没有移动失败,且在\(m\)轮内,使敌人移动失败恰好\(hp\)次的移动序列的方案数......
  • [paper阅读笔记][2023]CorpusLM: Towards a Unified Language Model on Corpusfor Kno
    文章链接:https://arxiv.org/pdf/2402.01176v2Paper的任务处理各种知识密集型任务任务的科学问题本文任务虽然是:提出一个统一的语言模型来处理各种知识密集型任务,但其实其本质科学问题是:如何提高LLMs在知识密集型任务中的检索效率。原因是:LLMs在生成文本时容易出现错误信......
  • GEE案例:Landsat 5、7、8影像构建1985-2023年rsei生态遥感指数详细代码
    之前关于RSEI的博客 GoogleEarthEngine(GEEÿ......
  • [lnsyoj2232]永恒
    题意给定一个由小写字母和数字组成的字符串\(s\),给定\(n\)个模式串\(t\),对第\(i\)个字符串\(t_i\),使得字符串\(s\)满足:删除其中任意多个字符,使\(s\)形式为T+Date,其中,T为模式串\(t_i\),Date为任意一个真实存在的日期。求对于每一个\(t_i\),求满足条件的\(s\)的......
  • [lnsyoj2234/luoguP9323]玩具设计
    题意原题链接给定一个\(n\)个点的无向图,你可以进行不超过\(max\_ops\)次查询操作\(\text{Connected}(x,a,b)\),每次操作可以查询在版本\(x\)中,\(a,b\)两个点之间是否连通,若连通,则返回当前版本号,否则新建一个版本,在该新版本中将这两个点之间连一条边,并返回新版本的版本号......
  • 电子科技集团WJ20057型热网智能终端数据监测MODBUS通信协议
    WJ2007型热网智能终端数据监测MODBUS通信协议  1、 WJ2007终端增加数据通信协议,上传实时数据;采用MODBUS通信协议,格式见表1;   地址功能起始地址点数CRC校验0x010x030x000x000x000x420xC50xFB1byte1bytes2byt......
  • BZOJ2839/LG10596 集合计数 题解(二项式反演+扩展欧拉定理)
    题目大意:一个有\(N\)个元素的集合有\(2^N\)个不同子集(包含空集),现在要在这\(2^N\)个集合中取出若干集合(至少一个),使得它们的交集的元素个数为\(K\),求取法的方案数,答案模\(10^9+7\)。为表述方便,不妨设这\(i\)个元素分别为\(1\simn\)。前置知识:二项式反演。考虑设\(g(......