CSP-S 2019 初赛 题解

admin 2025-09-02 9:33:44 2025-09-04 11:06:43

题目

1. 表达式求值

x + a % 3 * (int)(x + y) % 2
2.5 + 1 * (int)7.2 % 2
2.5 + 7 % 2
2.5 + 1
3.5

知识点:

2. 图片文件格式

  • WMV 视频文件
  • MPEG 视频文件
  • JPEG 图片文件
  • AVI 视频文件

知识点:

  • 文件格式

分类 常见格式(扩展名)
文本文档 .txt, .rtf, .doc, .docx, .odt
表格/数据 .csv, .xls, .xlsx, .ods
可打印文档 .pdf, .pdf/a(档案长期保存用)
网页/标记 .html, .htm, .xml, .md, .json
图像格式 .jpg, .jpeg, .png, .gif, .tiff, .svg, .bmp, .webp, .eps
音频格式 .mp3, .wav, .aac, .flac, .ogg, .wma
视频格式 .mp4, .avi, .mov, .wmv, .mkv, .webm, .3gp, .mpeg
可执行/脚本 .exe, .bin, .app, .sh, .bat
其他格式 .pdf/a, .epub, .md, .json, .sqlite, .sql, .obj, .fbx

3. 按位或运算

知识点:

  • 逻辑运算与位运算
    • 真值表

逻辑或运算

输入 A 输入 B 输出 A ∨ B
0 0
1 1
1 0
1

逻辑与运算

输入 A 输入 B 输出 A ∧ B
0 0 0
1
1 0
1

逻辑异或运算

输入 A 输入 B 输出 A ⊕ B
0 0
1 1
1 0
1 0

4. 编译器

将一种语言(通常是高级语言)翻译成另一种语言(通常是低级语言)。

知识点:编程语言

编程语言世代

  • 第一代语言:机器语言,01
  • 第二代语言:汇编语言
  • 第三代语言:高级语言,例如C
  • 第四代语言:极高级语言,例如SQL
  • 第五代语言:自然语言

5. 浮点数取整

x = (int)(x * 100 + 0.5) / 100.0;

知识点:

  • 浮点数转int会向下取整。
  • 类型转化的优先级比运算更高。
  • 常见函数:
    • ceil 向上去整
    • floor 向下取整
    • round 四舍五入
  • 以上三个函数的返回值类型与参数类型一致。

int main() {
  cout << int(-10.7) << endl; // -10
  return 0;
}

6. 计数

情况 数学表达式
ABCD 1 × A(4,4) = 24
AABC 2 × C(3,2) × C(4,2) × A(2,2) = 72
AABB 1 × C(4,2) = 6

总方案数:102

知识点:

组合数

7. 排序算法

快速排序是不稳定排序。

8. 图论计数

  • 完全图边数 m 与点数 n 的关系:m = n(n - 1)/2
  • 非连通无向图的边数 m 与点数 n 的关系: m <= (n - 1)(n - 2)/2

9. 计数

  • 根据颠倒规则
    • 可以放在第 3 位的数字有 {0, 1, 8}
    • 可以其他位置的数字有 {0, 1, 8, 6, 9}
    • 确定了前 2 位就可以确定后 2 位
  • 要使 5 位数能被 3 整除
    • 各位上数字之和要能被 3 整除
    • 0, 6, 9 能被 3 整除
    • 1, 8 如果在前两位出现,那么在后两位也要作为颠倒的结果出现
      2 × 1 和 2 × 8 模 3 的余数都为 2

  • 注意到第 3 位可以通过取 0 / 1 / 8 来让 5 位数被 3 整除。
  • 前 2 位任取 {0, 1, 8, 6, 9},方案数为 5 × 5 = 25,第 3 位根据模数确定,总方案数为 25。

10. 集合

知识点:

11. 归并

假设 ,需要 1 次比较完成归并。

知识点:

  • 归并排序

12. 数据结构

可以用存储图的数据结构:

知识点:

  • 二叉树
  • 队列
  • 邻接矩阵

13. 贪心算法

知识点:

  • 贪心算法
  • 最短路算法
  • 最小生成树算法

14. 等比数列

15. 动态规划

知识点:

  • 动态规划