PrevNext

编程比赛

编程比赛通常持续数小时, 由一组题目构成。这些并非尚无答案的开放问题;出题人与测试者已经解决过它们, 并将其设计为能在有限比赛时间内完成。解决一道算法竞赛题通常分为两步:

  1. 构思算法,需要解题能力与直觉;
  2. 实现算法,需要用编程技能把算法转化为可运行的代码。

每道题都要把代码提交给评测系统,由系统使用预先准备的测试数据检查程序答案。 程序还必须满足时间限制(通常为 2 秒)和内存限制(通常为 256 MB)。

算法竞赛与软件开发有明显区别:目标是快速写出能正确、高效计算答案的程序, 代码可维护性并非主要考量。比赛代码无需详尽文档,因为通常只需让当时的自己 看懂;不过仍应保持最低限度的可读性,以便理解和调试。

Resources
William Lin

即上方展示的视频

Kamil Debowski
CPH

算法与编程比赛

IUSACO

算法竞赛与比赛介绍

PAPS1

算法示例

下面是一道与 Kamil 视频中例题类似的题目:

Focus Problem – try your best to solve this problem before continuing!

初学者请注意

如果你已有编程经验,建议注册 Kattis 账号并提交解答;否则可以直接阅读题解。

题解——Basketball One-on-One

输出输入字符串的倒数第二个字符即可。

import java.util.Scanner;
public class basketballoneonone {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
System.out.println(s.charAt(s.length() - 2));
}
}

USACO

美国计算机奥林匹克竞赛(USACO)是一项全国性编程比赛, 每年举行四场:十二月赛、一月赛、二月赛和三月的 US Open。普通月赛持续四小时, US Open 持续五小时,每场包含三道题。评测系统用预设测试数据评分,总分 1000, 每题权重相同(约 333 分)。比赛分铜、银、金、铂金四组;达到当场晋级线的学生, 此后将参加更高组别。

更多信息请参见 USACO 常见问题

Module Progress:

PrevNext