# 竞赛复赛大纲与规则说明
## 一、 复赛大纲
### 初中组复赛大纲
| 模块 | 内容 |
| :--- | :--- |
| **数据结构** | 1. 指针类型(指针的概念及调用,指针与数组,字符指针与 string 类,指向结构体的指针)
2. 多维数组
3. 链表:单链表、双向链表、循环链表
4. 栈、队列、堆和并查集
5. 二叉树(完全二叉树的定义与基本性质,完全二叉树的数组表示法,哈夫曼树的定义、构造及其遍历,二叉排序树的定义、构造及其遍历)
6. 图的存储
7. 文件操作(从文本文件中读入数据,并输出到文本文件中) |
| **程序设计** | 1. 观察、分析问题的能力
2. 数学建模的能力
3. 算法的实现能力
4. 程序调试基本能力
5. 设计测试数据的基本能力
6. 程序的时间复杂度和空间复杂度的估计 |
| **算法处理** | 1. 离散数学知识的应用(如排列组合、数理逻辑)
2. 高精度算法(高精度的加法,高精度的减法,高精度的乘法,求高精度整数除以单精度整数的商和余数)
3. 模拟法
4. 贪心法
5. 递归和递推
6. 简单搜索算法(深度优先、广度优先)及其剪枝
7. 分治思想
8. 动态规划(动态规划的基本思路,简单一维动态规划,简单背包类型动态规划,简单区间类型动态规划)
9. 图论算法(图的深度优先遍历算法,图的宽度优先遍历算法,洪水填充算法(floodfill)) |
---
## 二、 复赛的软件环境
比赛编程语言为 C++ 或 Python,具体开发环境版本如下:
| 分类 | 软件 | 版本 | 说明 |
| :--- | :--- | :--- | :--- |
| **编译器** | C++ | 4.8.4 | C++ 编译器 |
| **集成开发环境** | Dev-cpp | 5.9.2 | C/C++ IDE |
| **编译器** | Python | 3.7.2 | Python 编译器 |
| **集成开发环境** | Thonny | 3.3.6 | Python IDE |
---
## 三、 复赛的文件命名
比赛中涉及的所有文件名(包括源程序名、输入文件名、输出文件名),都必须严格按照题目要求命名,严格区分大小写。
* **示例**:若题目要求输入文件名为 `game.in`,则程序中必须按照该名字打开文件,不能使用 `Game.in`、`GAME.IN` 等名字。
---
## 四、 复赛的语言使用限制
### 1. 对 C++ 程序的限制
* 程序禁止使用内嵌汇编和以下划线开头的库函数或宏(自己定义的除外)。
* 64位整数只能使用 `long long` 类型及 `unsigned long long` 类型。
* 可以使用 STL 中的模板。
* 其它关于比赛中编程语言使用限制的规定请参阅 [www.noi.cn](http://www.noi.cn) 网站的相关规定。
### 2. 对 Python 程序的限制
* 仅安装 Python 及 Thonny 自带函数库,不支持第三方库文件安装。
---
## 五、 复赛答卷提交要求
选手提交答卷,必须严格按照要求,以免影响成绩和获奖。
1. 在 `D` 盘根目录下建立选手目录,选手目录以选手 ID 命名,用于存放选手的答卷文件。
2. 选手目录下,对应每道题目有一个与该题同名的目录。该选手提交的源程序文件存放在对应的题目目录下。
* **目录结构示例**:
假设题目有 `cashier`、`dune`、`manhattan` 三题,选手的 ID 是 `HL-55`,使用的语言是 C++,该选手的选手目录结构及其中的文件如下所示:
```text
|---HL-55
| |---cashier
| | |---cashier.cpp
| |---dune
| | |---dune.cpp
| |---manhattan
| | |---manhattan.cpp
```
---
## 六、 选手成绩的评测
* 采用机器评卷的形式,全市集中评测。
## 七、 打卡交流
微信搜索公众号:火龙信奥(hlcoding)。
遇到任何问题,可以添加官方客服 QQ:693942404。
联系方式:181-5797-6037。