女孩和机器人一起思考

一起动脑筋 · 先看一个小故事

女孩看到题目“至少选两个”,机器人却只选了一个。计算过程可能没错,但任务读错了。

把过程摊开来看

沿着编号看一遍,再用自己的话讲一遍
  1. 找输入题目给什么
  2. 找输出到底要回答什么
  3. 圈条件至少、至多、不同
  4. 手算样例确认理解

读题先把要求翻译成自己的话。

尤其注意数量边界、是否允许重复,以及输出的是值、个数还是位置。能手算一个小例子,才说明规则开始清楚。

01题目故事和真正任务一样吗?

很多信奥题会讲故事,但算法真正处理的是故事背后的数据关系和规则

例如“同学排队买票”,可能真正的问题只是:给定若干到达时间,计算处理顺序。

02读题时要圈出哪些信息?

输入格式

有几行?每个数代表什么?

输出格式

输出几个值?格式是什么?

约束

n、数值范围、时间限制。

特殊规则

相等时怎么办?能否重复?

03“最多”“至少”“恰好”有什么区别?

这些词会直接改变问题。

至少 3 个

3、4、5……都可以。

恰好 3 个

只能是 3 个。

读题时要特别注意数量关系词。

04样例能证明什么?

样例只能帮助说明规则,并证明你的程序对这些样例输出正确。

05数据范围为什么也是题意的一部分?

例如 n ≤ 20n ≤ 200000,可能需要完全不同的算法。

所以数据范围不是“最后再看”的附加信息,而是帮助你理解题目应该怎样解决的重要线索。

06怎样检查自己真的读懂了?

试着回答:

  • 给我什么?
  • 我要输出什么?
  • 什么情况算合法?
  • 什么情况算最优或正确?
  • 最大数据有多大?

你已经知道了什么

  • 要把题目背景和真正计算任务分开。
  • 输入、输出、约束和特殊规则都属于题意。
  • 关键词会改变问题定义。
  • 样例只是示例,不是完整测试。
  • 数据范围常常暗示可行算法。

下一篇:怎样把现实问题变成数据?

轮到你来试一试

题目要输出最大值的位置,程序只输出最大值,算正确吗?

想好了吗?点开看解释

不算,回答了不同的问题。要记录并输出题目规定的位置,还需看位置从 0 还是 1 编号。