题型概述
概要:在算法竞赛中,有多种多样的问题类型。
一、传统题
传统题 是目前算法竞赛中较为常见的题型。
选手需要提交源代码,评测系统会使用事先准备好一些输入数据和相应的输出数据作为测试点,将选手提交的源代码编译后,让选手程序读入输入数据,通过将选手输出与事先准备好的输出比较,来判断选手程序是否正确。这种评测方式被称之为 黑盒评测。
对于一个测试点,往往还会设置时间限制和空间限制。
时间限制,指的是程序运行时间的限制。选手程序在一个测试点上的运行时间不能超过给定的时间限制。
空间限制,指的是程序使用的内存量的限制。选手程序在运行时占用的最大空间不能超过给定的空间限制。
在程序正常运行结束后,选手的输出会和测试点输出进行比对。这种比对一般采用过滤文末换行和行末空格之后,进行全文比对的方式。对于某些特殊的题目,会使用来进行Special Judge来比对。
这一过程结束后,评测系统会根据程序的运行状态,给出不同的 评测结果
-
Accepted(AC):选手程序被接受。
-
Compile Error(CE):选手程序无法正常编译。
-
Wrong Answer(WA):选手程序正常结束,但是选手程序的输出与测试点输出不符。
-
Presentation Error(PE):选手程序正常结束,但是格式不符合要求6。
-
Runtime Error(RE):选手程序非正常结束(选手程序结束时的返回值不为零)。
-
Time Limit Exceeded(TLE):选手程序运行的时间超过了给定的时间限制。
-
Memory Limit Exceeded(MLE):选手程序占用的最大空间超过了给定的空间限制。
-
Output Limit Exceeded(OLE):选手程序输出的内容的量超过了最大限制。
在 ICPC 赛事中,你的程序需要在一道题目的所有测试点上都取得 AC 状态,才能视为通过相应的题目。在 OI 赛事中,在一个测试点中取得 AC 状态,即可拿到该测试点的分数。
二、填空题(提交答案题)
填空题 是直接提交答案的题目。该种题目一般会给出输入文件,要求提交包含有 XXX1.out
、XXX2.out
、XXX3.out
…XXXn.out
的压缩包、文件夹或纯文件。
提交答案后,评测系统会比较答案文件与标准答案,根据选手答案的优劣情况和任务完成度,给予一定的分数。
因为提交答案题不需要运行源程序,故提交答案题不存在时间和空间限制。
做这种题目一般有两种方法:
- 手玩。这种方法简单粗暴,但是遇到较大的数据就没辙了。
- 编写一个程序来获得答案文件。
三、函数补全题
函数补全题 是需要选手补全程序的题目。可以理解为在一道交互题中,题目给定了选手代码,要求编写辅助函数。
通常有以下几种形式:
- 给定一个程序,并告知要求补全的代码块将被嵌入在哪里。
- 不给出程序,而将输入信息作为待提交函数的参数。
这种题在 LeetCode 和 PTA - 拼题 A 上比较多见。
四、交互题
通俗来讲, 交互题与平时题目的输入输出反过来, 是让你设计程序去向用户提出询问, 由用户给出答案, 并且在这基础上由程序推断出正确答案的一种形式.
交互题是一类特殊的算法题, 每次输入数据, 系统都会给出数据进行反馈, 需要通过系统反馈的数据, 得到某个答案. 交互题在蓝桥杯和OI比赛中都不会考察, CF偶尔会有交互题. 交互题的输入输出比较特别, 需要了解交互题独有的输入输出格式