朋友,你听说过算法竞赛吗?对对对!就那个一堆人对着电脑噼里啪啦敲的?不不不,那叫电子竞技!嗯嗯嗯,就是人比较多的,在体育场里的,做不出题在挠头的!嗯,这就是算法竞赛。
ACM-ICPC 2018 一场典型的算法竞赛。我校选手在照片拍摄地点的对面
那么究竟什么是算法竞赛呢?
著名算法竞赛选手、教练刘汝佳曾说过,算法竞赛是一种【思维的体操】。有人说了,不就是写算法吗!有什么大不了的,我平常调库百度算法写的好着呢!平常,我们写程序,写算法,都是在一种比较放松的环境下进行的。而算法竞赛会人为制造压力,例如限制编写程序的时间,禁止选手访问网络,以及利用特殊的比赛规则(如ACM竞赛中的封榜),这都给我们套上了一层无形的枷锁,让我们只能通过冷静的思考完成算法的编写。所以,我个人认为,算法竞赛是带着镣铐的【思维体操】。
那算法竞赛是怎么进行的呢?
许多竞赛都是在OJ上进行的。OJ(online judge)是指在线评测系统。首先我们需要在特定的时间和地点编写针对特定问题的算法,写出符合要求的程序,并且进行调试。完成后,会有相应的评测程序,自动编译运行你的程序,对你的程序输入不同的测试数据,进行一番【魔鬼测试】,根据测试结果给出你不同的分数。
能不能透露一些比赛的细节?
举个例子,我曾经参与过一次比赛的出题与组织工作(HBCPC2018),比赛规则为ACM赛制。比赛的过程大概是这样的: