中国大学生程序设计竞赛(China Collegiate Programming Contest,简称 CCPC)是一项由组委会主办的年度学科竞赛,目的是激发学生对计算机专业知识和技能的兴趣,培养学生运用计算机知识解决实际问题的能力,提升算法设计、逻辑推理、数学建模、编程实现和计算机系统能力,同时培养团队合作意识、挑战精神和创新能力。

组织机构

赛事由 CCPC 组委会承办,得到了众多企业的支持。例如,2023年一汽红旗是总赞助商,腾讯、华为云是白金赞助商。

参赛要求

  • 参赛队伍:每队由3名队员和1名教练组成。队员需为高校在籍本科生、专科生或研一学生,教练需为高校在职教师。

  • 参赛限制:每个学生每年最多参加2站分站赛。

CCPC(图1)

竞赛规则

比赛时长:比赛时长为5小时。如遇不可预见事件,组委会有权调整比赛时长,并及时通知参赛选手。

比赛模式:采用上机编程、实时评测和排名的方式确定成绩。

比赛题目:题目数量通常为10 - 14题,涵盖算法、数据结构、图论、动态规划、数论等领域,难度不一。总决赛和分站赛题目一般为英文描述(个别词句可附中文注释),其他比赛可采用中文描述。

比赛机器:每支参赛队共用1台计算机。

比赛评测:采用机器实时评测,每通过一题升一个对应颜色的气球。

比赛封榜:比赛最后一小时不显示排名变化,不升气球,颁奖后公布最终结果。

竞赛语言:至少支持C、C++、Java三种语言。

提交反馈:包括编译错误、运行错误、答案错误、超时、正确等。

赛程安排

网络预选赛:每年8月底 - 9月初举办,用于选拔有实力的队伍参加后续比赛。

分站赛和全国赛:每年9月 - 11月举办4场全国赛(分站赛),包括普通分站赛和女生专场比赛等。分站赛名额分为网络赛名额、省赛名额、奖励和外卡名额三类,具体分配规则如下:

网络赛名额:总数为n,根据网络赛学校排名分配。排名第1到[n×10%]名的学校,获得所有3站分站赛每站1个名额;排名第[n×10%]+1到[n×30%]名的学校,获得其中2站每站1个名额;排名第[n×30%]+1到[n×60%]名的学校,获得其中1站1个名额。

省赛名额:女生赛排名前20的学校各获得2个分站赛女生队专用名额;剩余名额按各省赛参赛队伍比例分配,余数部分按参赛队伍数逆序排列分配;按省赛学校排名给予相应学校1个省赛所属分站赛名额;每个学校在同一个分站赛最多获得1个名额(不含女生队专用名额)。

奖励和外卡名额:上一年总决赛排名前10的学校,每个分站赛奖励1个名额;分站赛承办学校,非承办站每站奖励3个名额;分站赛命题学校,非承办站每站奖励3个名额;网络赛命题学校,所有分站赛每站奖励1个名额;网络赛承办学校,所有分站赛每站奖励1个名额;省赛承办学校,所有分站赛每站奖励1个名额;夏季论坛承办学校,所有分站赛每站奖励1个名额;其他名额由组委会分配。

总决赛:每年11月 - 12月举办全国总决赛。

其他比赛:每年还会举办其他比赛,如全国女生专场比赛、省赛、地区邀请赛、全国邀请赛等。

历届概况

自2015年首届 CCPC 竞赛以来,赛事规模迅速扩大,影响力不断提升。2023年,320多所高校的近1500支队伍参加了网络赛,316所高校的1254队次参加了全国赛、女生专场比赛和高职专场比赛,最终114所高校的131支队伍晋级总决赛。

获奖情况

CCPC 的获奖情况可以反映各高校在程序设计方面的能力。最新获奖信息可通过竞赛官方网站查询。

备考资源

历届真题:可在 ACM/CCPC 历届真题题解资源库中找到各类比赛题目及解题思路,适合不同水平的学习者。

练题平台:如 LeetCode、牛客网等,提供丰富的编程练习题目,有助于提升算法设计和编程能力。