什么是算法竞赛?
这里所指的算法和算法工程师这个岗位所指的算法并不是同一种算法,前者是指传统算法,即Dijkstra之类的算法,后者指的是人工智能领域的算法,ML/DL等。
简单的说,算法竞赛就是通过编程语言(以C、C++、Java、Python为主)来进行编程,从而解决一些特定的问题。
通常题目会有一个背景介绍,然后要你解决某种问题,比如输入两个整数,输出它们的和。题目对输入的数据有明确的范围限制,甚至有的题目还会对输出数据有范围的限制。题目还会给出一些输入和输出的样例,来帮助参赛选手理解题意,但是不要天真的以为你的程序通过了样例就是正确的(要是这样我直接输出样例的结果不就好了吗),判断程序的正确与否,我们需要借助Online Judge(OJ),OJ可以看做是一个黑盒子,后台有非常多的测试数据,只有全部通过才算正确(如果出题人出的数据没问题的话)。
算法竞赛涉及的知识点有:搜索、图论、数据结构、动态规划、组合数学、数论、字符串、计算几何等。