NOI竞赛大纲2025修订版(CSP-J入门级)

简 介:

信息学奥林匹克竞赛简称NOI,由CCF主办,是五大学科竞赛中唯一小学和初中可以参与的赛事,NOI从2022年开始只支持C++语言参赛。2025修订版,NOI优化考察方向与知识体系,以凸显人类计算思维在算法设计中独有的创造性。


入门级(Certifed Software Professional Junior)

CSP-J考试分初赛笔试和复赛机考

  • 基础知识与编程环境

  • C++程序设计

  • 数据结构

  • 算法

  • 数学与其他

编程工具

NOI系列赛事从2022年其只支持C++参赛

  • Dev_C++(IDE)

  • Code::Blocks(IDE)

  • NOI_Linux(竞赛环境)


2.1.1 基础知识与编程环境

  1. 计算机的基本构成(CPU、内存、I/O设备等)

  2. Windows、Linux等操作系统的基本概念及常见操作

  3. 计算机网络和Internet的基本概念

  4. 计算机的历史和常见用途

  5. NOI以及相关活动的历史

  6. NOI以及相关活动的规则

  7. 位、字节与字

  8. 程序设计语言以及程序编译和运行的基本概念

  9. 使用图形界面新建、复制、删除、移动文件或目录

  10. 使用Windows系统下的集成开发环境(Dev C++)

  11. 使用Linux系统下的集成开发环境(Code::Blocks)

  12. g++、gcc等常见编译器的基本使用


2.1.2 C++ 程序设计

1.程序设计基本概念

  • 标识符、关键字、常量、变量、字符串、表达式

  • 常量与变量的命名、定义及作用

  • 头文件与名字空间的概念

  • 编辑、编译、解释、调试的概念

2.基本数据类型

  • 整数型:int、long  long 

  • 实数型:float、double

  • 字符型:char

  • 布尔型:bool

3.程序基本语句

  • 输入输出、赋值、复合

  • 条件

  • 循环

  • 多层循环

4.基本运算

  • 算术运算

  • 关系运算

  • 逻辑运算

  • 变量自增与自减运算

  • 三目运算

  • 位运算

5.数学库常用函数

  • 绝对值、四舍五入、下取整、上取整

  • 平方根、三角函数、对数、指数

6.结构化程序设计

  • 顺序结构、分支结构和循环结构

  • 自顶向下逐步求精的模块化程序设计

  • 流程图的概念及描述

7.数组

  • 数组与数组下标

  • 数组的读入与输出

  • 二维数组与多维数组

8.字符串的处理

  • 字符数组与相关函数

  • string类与相关函数

9.函数与递归

  • 函数定义与调用、形参与实参

  • 传值参数与传引用参数

  • 常量与变量的作用范围

  • 递归函数

10.结构体与联合体

  • 结构体

  • 联合体

11.指针与引用

  • 指针

  • 基于指针的数组访问

  • 字符指针

  • 指向结构体的指针

  • 引用

12.文件基本读写

  • 文件的基本概念、文本文件的基本操作

  • 文本文件类型与二进制文件类型

  • 文件重定向、文件读写等操作

13.STL 模板

  • 算法模板库中的函数:min、max、swap、sort

  • 栈、队列、链表、向量:stack、queue、list、vector


2.1.3 数据结构

1.线性结构

  • 链表:单链表、双向链表、循环链表

  • 栈

  • 队列

2.简单树

  • 树的定义与相关概念

  • 树的表示与存储

  • 二叉树的定义与基本性质

  • 二叉树的表示与存储

  • 二叉树的遍历:前序、中序、后序

3.特殊树

  • 完全二叉树的定义与基本性质

  • 完全二叉树的数组表示法

  • 哈夫曼树的定义和构造、哈夫曼编码

  • 二叉搜索树的定义和构造

4.简单图

  • 图的定义与相关概念

  • 图的表示与存储:邻接矩阵

  • 图的表示与存储:邻接表


2.1.4 算法

1.算法概念与描述

  • 算法概念

  • 算法描述

2.入门算法

  • 枚举法

  • 模拟法

3.基础算法

  • 贪心法

  • 递推法

  • 递归法

  • 二分法

  • 倍增法

4.算法策略

  • 前缀和

  • 差分

5.数值处理算法

  • 高精度加法

  • 高精度减法

  • 高精度乘法

  • 高精度整数除以单精度整数

6.排序算法

  • 排序的的基本概念

  • 冒泡排序

  • 选择排序

  • 插入排序

  • 计数排序

7.搜索算法

  • 深度优先搜索

  • 广度优先搜索

8.图论算法

  • 深度优先遍历

  • 广度优先遍历

  • 泛洪算法(flood fill)

9.动态规划

  • 动态规划的基本思路

  • 简单一维动态规划

  • 简单背包类动态规划

  • 简单区间类动态规划


2.1.5 数学与其他

1.数及其运算

  • 自然数、整数、有理数、实数及算术运算(加、减、乘、除)

  • 进制与进制转换:二进制、八进制、十进制、十六进制

2.初等数学

  • 代数(初中部分)

  • 几何(初中部分)

3.初等数论

  • 整除、因数、倍数、指数、质(素)数、合数

  • 取整

  • 模运算与同余

  • 整数唯一分解定理

  • 辗转相除法(欧几里德算法)

  • 素数筛法:埃氏筛法与线型筛法

4.离散数学

  • 集合

  • 加法原理

  • 乘法原理

  • 排列

  • 组合

  • 杨辉三角

5.其他

  • ASCII码

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐