新手村Ⅲ

一定要先点击左上角的“参与作业”按钮,再开始做练习题哦~

“参与作业”按钮

目录

  • 前言
  • 题目列表
  • 注意事项
  • 提示
      1. T323842 三角形的奥秘
      1. T323890 宏宇义助魔兽
      1. T323891 魔法弹珠大战
      1. T323893 飞龙比赛的裁决
      1. T584090 村民档案整理
      1. T323894 「要有光」
      1. T323904 精灵之跃
      1. T323901 魔法学院学籍管理
      1. T584092 村长的答疑会
      1. T323913 勇者的魔法统计图
  • Python 3.10 官方文档相关章节

前言

Simplicity is prerequisite for reliability.

—— Edsger W. Dijkstra

在编程的世界中,简单是可靠的前提。

本次练习的部分题目来自历年 NOIP 普及组(也就是初中组)中的简单题——但不用担心,我们不需要用 C++ 来解决这些问题,在我们手中的工具是易用的 Python。

如果某些题目让你感到没有头绪,可以看看「提示」章节,也许会找到一些灵感。

题目列表

序号题目
0T323842 三角形的奥秘open in new window
1T323890 宏宇义助魔兽open in new window
2T323891 魔法弹珠大战open in new window
3T323893 飞龙比赛的裁决open in new window
4T584090 村民档案整理open in new window
5T323894 「要有光」open in new window
6T323904 精灵之跃open in new window
7T323901 魔法学院学籍管理open in new window
8T584092 村长的答疑会open in new window
9T323913 勇者的魔法统计图open in new window

注意事项

  • 提交答案时,一定要将语言设置为“Python 3”(默认是 C++);
  • 耐心读题,确保已经理解了题意、数据类型、输入输出要求后再作答;
  • 计算机没有玄学,如果 WA (Wrong Answer) 了,仔细分析原因,思考为什么出错,带着理由修改代码,而不是盲目修改代码;
  • 建议不要打印多余的空格和空行。

提示

0. T323842 三角形的奥秘

  • 写分支结构的时候,注意各个分支条件的互斥性和先后顺序。
  • “三角形的两边之和大于第三边”
  • 简单来说,只要细心,就已经没什么好怕的了(もう何も怖くない)。

已经没什么好怕的了

1. T323890 宏宇义助魔兽

只要不想复杂,这道题就不复杂。

说得好,但是这毫无意义。

2. T323891 魔法弹珠大战

  • 如果你提交的时候显示 TLE 。说明答案没错,但是超时了。这个时候,要么优化算法,要么多用点空间。
  • 还记得新手村一通关秘籍里的技巧吗?

虽然很不想说,但毕竟收了小费。

“ 把算过的结果存下来。 ”

3. T323893 飞龙比赛的裁决

  • 我建议直接用内置函数吧。
  • 不用内置函数也可以写,如果你想挑战一下自己~

4. T584090 村民档案整理

  • 读取多行数据可以用 while 循环,依次存取。
  • 课上讲过的字典排序方法。如果有多个条件,它会按照元组中条件的先后顺序来进行排序。

5. T323894 「要有光」

如果没有魔法矿石和火把,这个世界将是一片黑暗。

所以,哪里亮了点哪里。

——善良的助教

相信我,你也可以变成光

6. T323904 精灵之跃

  • 存下每一个连续数字的差;
  • 判断这些差是否连续。

7. T323901 魔法学院学籍管理

T322571 魔法图书馆管理员云洁open in new window pro max版本

8. T584092 村长的答疑会

只要不想复杂,这道题就非常简单;但如果想复杂了,这道题就非常复杂。

大胆一些,大力出奇迹!

——前几任善良助教的谏言

大力出奇迹

这一任善良助教的谏言:

  • 这是一个很简单的 贪心 策略问题。 局部最优 能推出 全局最优
  • 小学奥数告诉我们,只要时间短的排前面,那么总体的等待时间一定是最短的。

9. T323913 勇者的魔法统计图

  • 这是一道复杂的 模拟 题 。
  • 统计图看起来有点复杂,但如果把它抽象一个二维的 list 呢?
  • 统计字母出现次数这件事很简单,但有一些需要注意的:
    • 首先,每一个字母都要出现。
    • 其次,怎么把频次转换成带 * 的序列呢?

Python 3.10 官方文档相关章节

官方文档中的一些内容可能对初学者而言过于晦涩,难以理解,所以也不必强迫自己一开始就理解其中的全部内容——等用到时回头再看,自然就会有所感悟。

  1. Python 教程open in new window
  2. input()open in new window
  3. print()open in new window
  4. 数字类型 --- int, float, complexopen in new window
  5. 文本序列类型 --- stropen in new window
  6. 序列类型 --- list, tuple, rangeopen in new window
  7. 映射类型 --- dictopen in new window
  8. 集合类型 --- setopen in new window
  9. 列表推导式open in new window
  10. 序列解包open in new window
  11. math --- 数学函数open in new window
  12. 格式化字符串字面值 (f-string)open in new window
  13. 格式规格迷你语言open in new window
  14. chr() - 内置函数open in new window
  15. ord() - 内置函数open in new window