如何提升编程能力,备战程序设计竞赛?本文是0基础到竞赛获奖的刷题指南

liuyong 2023-08-11 09:27:36

程序设计竞赛是最火爆的竞赛之一,参加高水平学科竞赛并获得国家级奖励对以后升学,就业都有很大的帮助。


高水平程序设计竞赛包括:ICPC国际大学生程序设计竞赛(3人组队),CCPC中国大学生程序设计竞赛(3人组队),“蓝桥杯”全国软件技术与专业人才大赛(个人赛),全国高校团体程序设计天梯赛(10人组队),“百度之星”全国大学生程序设计竞赛(个人赛)。

每年ACM竞赛团队都在校内组织新生赛、校赛,女生赛、月赛,周赛等,年累计参赛5000余人次,每年校赛的参赛人数超过500人。


我校竞赛队员在校外高水平程序设计竞赛中取得了优异成绩,包括ICPC国际大学生程序设计竞赛亚洲区金奖,天梯赛全国一等奖,蓝桥杯全国一等奖,百度之星程序设计竞赛全国总决赛第五名,CCPC女生总决赛金奖等,每年ACM集训队都获得国家级奖励数十项,省部级奖励数百项。


那么,怎么刷题备战程序设计竞赛?希望这个帖子能有帮助:


第一步,需要熟悉C和C++的基本语法,完成基础的300道题,题目列表如下


程序设计基础一(50题)https://www.buctcoder.com/contest.php?cid=1953
程序设计基础二(50题)https://www.buctcoder.com/contest.php?cid=1954

程序设计基础三(50题)https://www.buctcoder.com/contest.php?cid=1964
程序设计基础四(50题)https://www.buctcoder.com/contest.php?cid=1965
程序设计基础五(50题)https://www.buctcoder.com/contest.php?cid=1970
程序设计基础六(50题)https://www.buctcoder.com/contest.php?cid=1973


程序设计竞赛图书配套题库(99题)https://www.buctcoder.com/contest.php?cid=2712

做完上面的题目,参加程序设计新生赛大概率可以拿到一等奖,同时可以去参加ACM集训队组织的周赛和月赛,codeforce和atcoder两个国际算法竞赛平台的比赛,

如果自己看书刷题有困难,建议去acwing网站购买视频算法课学习(网址:https://www.acwing.com/activity/),讲的非常好


在codeforces这个网站上 rating能到1000分,就可以联系指导老师(刘勇、周晓琳)或者相关同学加入集训队;

BUCTOJ周赛题目库https://www.buctcoder.com/contest.php?cid=2710

第二步,需要熟悉数据结构,熟练掌握C++ STL,完成浙江大学数据结构课程配套的90道题目,列表如下
数据结构学习与实验指导(1)https://www.buctcoder.com/contest.php?cid=2092
数据结构学习与实验指导(2)https://www.buctcoder.com/contest.php?cid=2101
数据结构学习与实验指导(3)https://www.buctcoder.com/contest.php?cid=2108
数据结构学习与实验指导(4)https://www.buctcoder.com/contest.php?cid=2116
数据结构学习与实验指导(5)https://www.buctcoder.com/contest.php?cid=2134
数据结构学习与实验指导(6)https://www.buctcoder.com/contest.php?cid=2137


以及图书《算法竞赛训练营入门篇》的配套题目 https://buctcoder.com/contest.php?cid=3181 和 https://buctcoder.com/contest.php?cid=3182


第三步,开始进入ACM专题训练,可以去acwing上刷基础课和提高课,并且可以研究《挑战程序设计竞赛》,《算法导论》,《程序设计竞赛入门经典》等竞赛教材,并完成配套题目。BUCTOJ上有教材《算法竞赛进阶指南》的配套题目,具体如下
ACM暑假专题训练(第一周) https://www.buctcoder.com/contest.php?cid=1957
ACM暑假专题训练(第二周) https://www.buctcoder.com/contest.php?cid=1958
ACM暑假专题训练(第三周) https://www.buctcoder.com/contest.php?cid=1959
ACM暑假专题训练(第四周) https://www.buctcoder.com/contest.php?cid=1960
ACM暑假专题训练(第五周) https://www.buctcoder.com/contest.php?cid=1961
ACM暑假专题训练(第六周) https://www.buctcoder.com/contest.php?cid=1962
ACM暑假排位赛(铜奖难度) https://www.buctcoder.com/contest.php?cid=2711

完成上面3个步骤,刷完acwing的提高课,相信你已经对算法有了很深的理解,再结合ACM集训队的各种训练,努力把自己的cf rating提升到1800分,将非常有希望拿到程序设计竞赛的国家级奖励~~

每年的蓝桥杯全国软件大赛(每年11月组织报名,年后4月省赛,5月国赛)都吸引了数百名同学报名参加,如何备战该比赛,努力拿到省赛一等奖呢?以下内容有参考价值:
将acwing上的基础课和提高课的算法烂熟于心,并熟练解决配套题目,其中包括但不限于
(1)模拟题:不需要算法和数据结构,只需要逻辑、推理的题目,难度可难可易;
(2)BFS和DFS,也就是暴力搜索,这是基本的算法,是基础中的基础,可以在蓝桥杯骗很多分;
(3)动态规划,特别是比较简单的线性DP,其他包括概率dp,区间dp,多维dp等
(4)基本算法,例如二分法,倍增,差分,快速排序,KMP等等;
(5)计算几何,例如圆相关算法,点线面,极角排序等
cf rating达到1600+,大概率可以拿到省赛一等奖,进国赛!