电话18065871965

邮箱qidianxingcheng@163.com

地址三明市三元区乾龙新村69幢B座2楼

信息学竞赛训练网站(Atcoder&Codeforces)

2024年10月29日 1,032

学习编程最好的方法就是编写程序。————来自学习忠告

学习信奥可以只听不练吗?

答案显然是否定的,想要熟练掌握任何知识都是需要大量地练习。对于入门阶段我们建议听练比重为六四开,随着学习的深入,练习的比重应逐渐增大。听是为了学习新的知识点,训练是为了熟练应用,以及总结经验。我们建议学生在学习到一定程度之后在一些竞赛网站上进行比赛训练,从而得到更好的学习效果。比如 AtcoderCodeforces 这两个网站,这也是全球最多 OIer 选手选择的竞赛训练平台。

竞赛网址如下

Atcoderhttps://atcoder.jp/home

Codeforceshttps://codeforces.com/

同学们打开竞赛网站之后会发现是英文的,不用担心。此时我们安装插件进行翻译即可,以下介绍如何安装插件,以及注册账号,还有如何参加比赛

Tampermonkey.crx 插件安装

该插件为油猴插件,可能打游戏的同学都知道,甚至已经安装过了,为了安装一些游戏的脚本。(没有 Tampermonkey.crx 插件的同学从公众号主页添加老师微信获取)。另外如果刚开始准备学习 C++ 的同学推荐安装 Sublime Text 编写代码,Dev-C++ 不太推荐。

首先打开 Google 浏览器 ,上方搜索框输入 chrome://extensions/ 打开扩展程序。

打开扩展程序,然后再打开开发者模式,接下来将插件(Tampermonkey.crx)直接拖到这个扩展程序的页面,

然后进入到油猴插件的首页,点击《用户脚本》。

Atcoder竞赛网站

点击《注册》,然后填写信息,带 * 号的必填,其他的自己选择性填写即可。

Codeforces竞赛

Atcoder 基本一样,这里大概介绍一下;不太推荐学生参加实时赛,因为太晚了,一般都是晚上 10 点 30 分左右。赛后参加虚拟赛即可。

Atcoder&Codeforces杂项

首先是 Atcoder 的等级,一共有 AtCoder Beginner Contest (ABC) 这是最频繁且最简单的入门赛,通常情况下每月至少举行 2 次。2019 年4 月 27 日(含)之前,每场比赛共 4 题,时长100 分钟,满分 1000 分且 Rating 超过 1199 的选手不计 Rating 值。自 2019 年 5 月 19 日起改版升级为 6 道题目,时长不变,满分 2100 分且Rating 值超过 1999 的选手不计 Rating 值。改版之后比赛质量和参加人数均有较大突破和提升。由于入门赛题目较简单,因此许多参赛者会选择倒序做题。赛题按照洛谷的难度评级约为红题~蓝题,本类比赛题目具有极强的教育意义,因此建议初学者或参加普及组的选手多参加此比赛以锻炼代码熟练度。AtCoder Regular Contest (ARC) 这是AtCoder 的常规赛,共 4 道题目,时长 100 分钟,满分 2100 至 2700 不等,Rating 超过 2799的选手不计 Rating 值。特别地,本比赛一般与ABC 同时进行,ABC 的 C、D 题与本比赛前两题相同,因此 ARC 赛题通常编号为 CF,ABC 编号AD 。题目难度中等,赛题按照洛谷的难度评级约为黄题~紫题。AtCoder Grand Contest (AGC) 这是 AtCoder 最优秀的比赛,题目全部聘请特级选手进行原创。通常情况下赛题具有较大的思维难度。每月一般会举行 1 次,6 道题目,时长 110 分钟至 150 分钟不等,通常总分 5600。所有选手均计 Rating 值。

然后是 Codeforces ,该比赛分为 Div. 4、Div. 3、Div. 2、Div. 1,由低到高,Div. 4 属于入门赛,可以参考 AtCoder Beginner Contest (ABC) ,Div. 1 参考 AtCoder Grand Contest (AGC) 。

最后介绍一些常见的提交结果:AC Accepted (正确)WA Wrong Answer(错误)很多 ACM 新手们,在千辛万苦写好一份代码并且自认为是正确的,但是提交之后却得到了 Wrong Answer 的结果,他们百思不得其解,其实,OJ 的后台有很多组测试数据,就算你的代码可以通过样例,但并不代表可以通过后台的所有数据,只要你有一组数据输出与测试输出不一样,你就无法AC。所以建议同学们,可以自己脑补一些特殊数据,看看是否能够得到正确的结果。除此之外,还要再次认真读题,很多时候 Wrong Answer 都是因为没有正确理解题目的意思。CE Compile Error(编译错误)通常是指语法错误,这是最最简单的错误了,因为你完全可以在提交之前,在本地的编译器上测试出来,然后改正。TLE Time Limited Exceed(超时)通常需要进行算法优化来降低时间复杂度,加快代码运行的时间,也需要注意一下代码出现死循环(新手常犯错误)。RE Runtime Error(运行错误)常见的RE有以下几种:数组开得太小了,导致访问到了不该访问的内存区域;发生除零错误;大数组定义在函数内,导致程序栈区耗尽;指针用错了,导致访问到不该访问的内存区域;程序抛出了未接受的异常(尤其是Java语言,大部分运行错误都是因为空指针异常–>找不到对象);段错误:数组越界、dfs栈溢出。OL Output Limit(输出超限)遇到这种错误,一般都是固定套路,程序中输出语句有死循环,导致程序输出无法终止。PE Presentation Error(格式错误) 这种错误还是比较容易发现并改正的,通常产生的原因是由于你的代码输出的格式与题目要求的不一致,比如:大小写错误;行末不应该有空格;分号 冒号 逗号等中英文标点符号傻傻分不清;换行和空格乱用。

个人评价

通常来说对于新手适合参加 Atcoder 里面的 AtCoder Beginner Contest (ABC) ,如果对标信息学奥赛的话,相当于 CSP-J 组满分吧。其他的依次提高,上面有写难度。最近给一些其他地方学习的孩子进行测试,发现学了很多,问就是知道,做题完全不行,甚至说基础题都做不出来,白白浪费了很多时间,希望各位家长能够了解自己孩子的学习情况,监督孩子完成作业,参加训练,为信奥而战。当然,也不仅仅是为了信奥,在任何学习中我们都要认真学习,努力训练。当然,如果主观意识就是为了玩的话,我建议去游乐场或者去旅游,没太大必要学这个。