竞赛介绍
由@LYS编辑此页面
算法竞赛
ACM-ICPC
ICPC(国际大学生程序设计竞赛,International Collegiate Programming Contest)由ACM(美国计算机协会)主办。比赛中的问题通常涉及算法、数据结构、图论、动态规划等计算机科学的基本知识,并要求参赛队伍在有限时间内编写出正确且高效的程序。
比赛遵循ACM赛制:
- 一般是三个人组成一队使用一台机器,合作完成同一套题目。
- 每道题提交之后都有反馈,可以看到“通过”、“运行错误”、“答案错误”等等结果,但看不到错误的测试样例。
- 每道题都有多个测试点,每道题必须通过了所有的测试点才算通过。
- 每道题不限制提交次数,但没通过的话会有20分钟罚时,仅以最后一次提交为准。
- 比赛过程中一般可以看到实时排名,通过题数相同的情况下按照答题时间+罚时来排名。
- 一些 ICPC 相关赛事中,比赛结束前一小时进行封榜,封榜后的提交和排名将无法被其他选手看见。
ICPC的竞赛形式是一个多阶段的比赛,包括区域赛、区域决赛和全球总决赛。在 ICPC 相关赛事中,选手允许带一定量的纸质资料。
有趣的是,在比赛中,每个赛题对应一种颜色的气球,通过该题目的队伍会得到对应颜色气球。每道题目第一支解决掉它的队还会额外获得一个“FIRST PROBLEM SOLVED”的气球(一血气球)。
CCPC
CCPC(China Collegiate Programming Contest)是中国大学生程序设计竞赛的缩写,是中国高校计算机科学与技术专业的顶级竞赛之一。由中国计算机学会主办,旨在提高大学生的编程能力、算法设计与分析能力以及团队协作能力。
CCPC的比赛形式类似于国际大学生程序设计竞赛(ICPC),也采用ACM赛制。
CCPC的比赛通常分为区域赛和总决赛两个阶段。区域赛是初赛阶段,分为多个赛区,每个赛区的前几名队伍可以晋级到总决赛。总决赛是最终的决赛阶段,由各个赛区的晋级队伍组成,争夺最终的冠军。
GPLT
GPLT(Group Programming Ladder Tournament)是团体程序设计天梯赛的缩写,由全国高等学校计算机教育研究会主办,旨在旨在提高大学生的编程能力、算法设计与分析能力以及团队协作能力。
与XCPC不同,GPLT每支参赛队由最多 10 名队员组成,且比赛为IOI赛制:
- 每道题提交之后都有反馈,可以看到“通过”、“运行错误”、“答案错误”等等结果,甚至可以实时看到自己每道题得了多少分,但看不到错误的测试样例。
- 每道题都有多个测试点,根据每道题通过的测试点的数量获得相应的分数。
- 每道题不限制提交次数,如果提交错误没有任何惩罚,仅以最后一次提交为准。
- 比赛过程中一般可以看到实时排名,按照总得分来排名。
GPLT的赛题分为三个等级,参赛队员可以在比赛中的任何时刻尝试解决任何梯级的题目。但只有当一支队伍的基础题总分超过 800 分时,其本队进阶部分的题目分数才被判为有效。只有当其进阶题总分超过 400 分时,其本队登顶部分的题目分数才被判为有效。
具体比赛细则可以参考:GPLT命题与竞赛评分
蓝桥杯大赛-软件类
蓝桥杯全国软件和信息技术专业人才大赛(简称“蓝桥杯大赛”)由工业和信息化部人才交流中心主办,国信蓝桥教育科技有限公司承办。
软件类比赛为OI赛制:
- 每道题提交之后都没有任何反馈,每道题都有多个测试点,根据每道题通过的测试点的数量获得相应的分数。
- 每道题不限制提交次数,如果提交错误没有任何惩罚,仅以最后一次提交为准。
- 比赛过程中看不到实时排名,赛后按照总得分来排名。
比赛分为省赛和国赛,省赛一等奖可以入围国赛,除此之外还有不同的组别,具体细则参考:大赛章程。
计算机软件设计类
中国大学生计算机设计大赛
中国大学生计算机设计大赛(Chinese Collegiate Computing Competition,简称“大赛”或4C)是我国高校面向本科生最早的赛事之一,自2008年开赛至2019年,一直由教育部高校与计算机相关教指委等或独立或联合主办。
大赛的目的是以赛促学、以赛促教、以赛促创,为国家培养德智体美劳全面发展的创新型、复合型、应用型人才服务。
该竞赛主要是根据不同的赛道进行选题,然后合作开发满足要求的作品进行参赛和评比,其含金量较高,被广泛认可。同时,我校的老师也十分注重,每年都会对参赛学生进行指导。
具体比赛规则参考参赛要求。
中国软件杯大赛
中国软件杯大赛是中国最具影响力的大学生计算机软件设计大赛之一,由中国计算机学会主办,每年一届。该比赛旨在鼓励大学生创新思维和软件设计能力的培养,促进学生在软件开发领域的学习和实践。
大赛的一些特点:
- 参赛范围广泛:中国软件杯大赛面向全国各高校的本科生和研究生开放。
- 多个赛题选择:每年的比赛会提供多个赛题供参赛队伍选择,涵盖了计算机科学与技术的各个领域,如软件开发、人工智能、大数据、物联网等。
- 实践与创新结合:中国软件杯大赛注重实际应用和创新性,参赛队伍需要设计并实现一个完整的软件系统或解决方案。
- 专业评审与评奖机制:该大赛设有专业评审团队,由业界专家和学者组成,对参赛作品进行标准化的评审和打分。
- 学术交流与展示平台:为参赛队伍提供了一个学术交流和展示的平台,组委会还会组织一系列的技术讲座、研讨会等活动,促进学术交流和合作。
具体赛道和规则参考大赛官网即可。
ps:我们学校参赛时,有一些赛道会有企业赞助,资源更多也更容易获奖。
CTF
大赛简介
「CTF Capture The Flag」中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过相发起真实攻击进行技术比拼的方式;其将安全相关的知识点抽象出来并加入到题目中,我们通过对知识点的理解认知,具体地进行实践来攻克题目。
参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。为了方便称呼,我们把这样的内容称之为“Flag”。
竞赛模式
CTF有个人赛和团队赛,在主流比赛中多为团队赛
CTF赛制分多种,国内常见的为「 解题模式 Jeopardy 」「 攻防模式 | AWD (Attack With Defense) 」「 静态攻防 AWDP (Attack With Defence Plus) 」一般分为线上线下两个阶段,线上通常采用 解题模式 ,线下通常为 CTF +( 理论 )+ AWD/AWDP 模式,具体看主办方安排。
- 「 解题模式 Jeopardy 」目前大多数国内外CTF比赛的主流形式,选手自由组队参赛。题目通常在比赛过程中陆续放出。解出一道题目后,提交题目对应的flag即可得分,比赛结束时分高者获胜。
- 「 攻防模式 | AWD (Attack With Defenseawd) 」通常为现场比赛,多数CTF决赛的比赛形式,选手自由组队参赛。相比于解题模式,时间更短,比赛中更注重临场反应和解题速度,需要能够快速攻击目标主机的权限,考察团队多方面的综合安全能力。
- 「 静态攻防 AWDP (Attack With Defence Plus) 」解题+加固赛,参赛队伍无法直接攻击其他队伍,只有每回合算分和其他队伍有关。参赛战队可以直接对其他队伍gamebox发起攻击,通过ssh登录加固自己gamebox。
在CTF中,我们一般接触的最多的就是「 解题模式 Jeopardy 」。
竞赛方向
由于CTF知识面很广,一个人不可能面面俱到,所以选手们通常都会选择一个自己喜欢的方向深入研究,,通常分为五个方向:MISC、CRYPTO、WEB、REVERSE、PWN:
- 「 杂项 MISC 」安全杂项涉及到古典密码学、编码、隐写术、电子取证、数据分析等广度极高的安全手段及利用方法,选手需要确定手段或者方法,反向的去破译取证从而拿到flag,MISC是CTF比赛中广度最高的方向,需要各个方向都有涉猎。 ——嗯?题不知道丢哪?没事丢杂项就好!
- 「 密码学 CRYPTO」密码学简单讲就古典密码和现代密码,当然大多数古典密码的题目目前都被划分到MISC中,目前的密码学反而更偏向现代密码学,常出现分组密码、流密码和公钥密码体制的考察,对初等数学、基本的数论有一定需求。选手通常被给予一个加密程序,抹去明文之后留下的加密过程和输出,要求选手通过密码体制的弱点来还原flag。 ——听说Oi爷又AK了!
- 「 网络攻防 WEB 」着重于Web应用程序,框架,浏览器以及各类Web服务器的安全问题;挖掘/利用/研究各类Web系漏洞,探究其形成原理、利用方式及修补方案。题目常见的漏洞类型包括注入、XSS、文件包含、代码执行、上传、SSRF等,选手通过漏洞直接或者间接拿到shell或者得到某些关键文件从而得到Flag。 ——汪汪汪
- 「 逆向工程 Reverse Engineering 」研究各类操作系统,编译器,虚拟机的底层架构,以Windows和Linux为平台,学习可执行程序的逆向分析技术,如软件调试与破解,对已经编译完成的可执行文件进行分析,研究程序的行为和算法,然后以此为依据,计算出出题人想隐藏的flag ——逆��
- 「 二进制漏洞利用 Pwn 」Pwn在安全领域是「攻破」的意思。主要研究程序漏洞利用技术,例如栈溢出、堆管理器的漏洞利用和其他高阶技巧;挖掘和分析各类基于编译型语言的漏洞。二进制攻击涉及到栈溢出、堆溢出、格式化字符串漏洞等二进制漏洞,选手需要借助这些漏洞获取计算机权限,从而拿到flag ——PWN!(指声音
Q&A
参加这些比赛有什么好处,强制要求吗?
参加这些比赛除了能够获得各种证书之外,还能将你的技能进行实践,即便最后没有获奖,以赛促学也是一个不错的选择。
当然,这些比赛都不是强制参加的,你也可以去做你认为的更有意义的事情。
推荐参加什么比赛,需要什么水平才能参加?
视自身情况进行选择和安排:
- 算法竞赛:能够提升调试代码的能力以及提升对数据结构和算法的掌握。
- 计算机软件设计类:提升程序开发和调试能力,以及团队协作、论文写作能力。
- CTF:提升网络安全知识,网络攻防技能。
竞赛必然是要求参赛者具有一定水平的,但只要你肯勤加学习和练习,都能取得不错的成绩。