竞赛大纲全国青少年信息学奥林匹克竞赛活动算法定理字符串

2021年4月,全国青少年信息学奥林匹克竞赛大纲在NOI官网发布。为方便大家的查阅和收藏,信奥营把大纲的入门级、提高级和NOI级整理了出来。

二、大纲

2.1入门级

2.1.1计算机基础与编程环境

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

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

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

4.【1】计算机的历史及其在现代社会中的常见应用

6.【1】进制的基本概念与进制转换、字节与字

7.【1】程序设计语言以及程序编译和运行的基本概念

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

9.【1】使用Windows系统下的集成开发环境(例如DevC++等)

10.【1】使用Linux系统下的集成开发环境(例如Code::Blocks等)

11.【1】g++、gcc等常见编译器的基本使用

【X】表示难度系数

2.1.2C++程序设计

1.程序基本概念

【1】标识符、关键字、常量、变量、字符串、表达式的概念

【1】常量与变量的命名、定义及作用

【2】头文件与名字空间的定义与理解

【2】编辑、编译、解释、调试等概念理解

2.基本数据类型

【1】整数型:int,longlong

【1】实数型:float,double

【1】字符型:char

【1】布尔型:bool

3.程序基本语句

【2】cin语句,scanf语句,cout语句,printf语句,赋值语句,复合语句

【2】if语句,switch语句,多层条件语句

【2】for语句,while语句,dowhile语句

【3】多层循环语句

4.基本运算

【1】算数运算:加、减、乘、除、整除、求余

【1】关系运算:大于,大于等于,小于,小于等于,等于,不等于

【1】逻辑运算:与(&&)、或(||)、非(!)

【1】变量自增与自减运算

【1】三目运算

【3】位运算:与(&)、或(|)、非(~)、异或(^)、左移、右移

5.数学库常用函数

【3】绝对值函数,四舍五入函数,取上整函数,取下整函数,常用三角函数,对数函数,指数函数,平方根函数

6.结构化程序设计

【1】顺序结构、分支结构和循环结构

【2】自顶向下、逐步求精的模块化程序设计

【2】流程图的概念及流程图描述

7.数组

【1】数组定义,数组与数组下标的含义

【1】数组的读入与输出

【2】纯一维数组的综合运用

【3】纯二维数组与多维数组的综合应用

8.字符串的处理

【2】字符数组与字符串的关系

【2】字符数组的综合应用

【3】string类的综合应用

9.函数与递归

【2】函数定义与调用,形参与实参

【3】传值参数与传引用参数

【2】常量与变量的作用范围

【2】递归函数的概念、定义与调用

10.结构体类型

【3】结构体的定义及应用

11.指针类型

【4】指针的概念及调用

【4】指针与数组

【4】字符指针与string类

【4】指向结构体的指针

12.文件及基本读写

【2】文件的基本概念,文本文件的基本操作

【2】文本文件类型与二进制文件类型

【2】文件重定向、文件读写等操作

13.STL模板应用

【3】中sort函数

【4】栈(stack)、队列(queue)、链表(list)、向量(vector)等容器

1C++以外的其他高级程序设计语言可参照本部分内容。

2.1.3数据结构

1.线性表

【3】链表:单链表、双向链表、循环链表

【3】栈

【3】队列

2.简单树

【4】树的父亲表示法

【3】二叉树的定义及其基本性质

【4】二叉树的孩子表示法

【4】二叉树的遍历:前序、中序、后序遍历

3.特殊树

【4】完全二叉树的定义与基本性质

【4】完全二叉树的数组表示法

【4】哈夫曼树的定义、构造及其遍历

【4】二叉树的定义、构造及其遍历

4.简单图

【4】图的邻接矩阵存储

【4】图的邻接表存储

2.1.4算法

1.算法概念与描述

【1】算法概念

【2】算法描述:自然语言描述、流程图描述、伪代码描述

2.入门算法

【1】枚举法

【1】模拟法

3.基础算法

【3】贪心法

【3】递推法

【4】递归法

【4】二分法

【4】倍增法

4.数值处理算法

【4】高精度的加法

【4】高精度的减法

【4】高精度的乘法

【4】求高精度整数除以单精度整数的商和余数

5.排序算法

【3】排序的基本概念(稳定性等)

【3】冒泡排序

【3】简单选择排序

【3】简单插入排序

6.图论算法

【4】图的深度优先遍历算法

【4】图的宽度优先遍历算法

【5】洪水填充算法(floodfill)

7.动态规则

【4】动态规划的基本思路

【4】简单一维动态规划

【5】简单背包类型动态规划

【5】简单区间类型动态规划

2.1.5数学

1.数及其运算

【1】数的概念,算术运算(加、减、乘、除、求余)

【1】数的进制:二进制、八进制、十六进制和十进制及其转换

【2】编码:ASCII码,哈夫曼编码,格雷码

2.初中数学

【1】初中代数

【1】初中平面几何

3.初等数论

【3】整除、因数、倍数、指数、质数、合数、同余等概念

【3】唯一分解定理

【3】欧几里得算法(辗转相除法)

【4】埃氏筛法和线性筛法求素数

4.组合数学

【2】加法原理

【2】乘法原理

【4】排列及计算公式

【4】组合及计算公式

【4】杨辉三角公式

2.2提高级

2.2.1计算机基础与编程环境

1.【5】在Linux系统终端中使用mkdir、cp、rm、mv等命令新建、复制、删除、移动文件或目录

2.【5】在Linux系统终端中使用cd、pwd、ls等命令更改、显示目录路径和查看目录中的文件

3.【5】在Linux系统下使用Gedit、Vim或Emacs等文本编辑工具编写代码

4.【5】熟悉g++、gcc等编译器以及优化、数学库等常见编译选项

5.【5】在Linux系统终端中运行程序,并使用time命令查看程序用时(区分realtime、systime和usertime)

6.【5】了解调式工具gdb及其break、display、continue、step等命令

2.2.1C++程序设计2

1.类(class)

【6】类的概念及简单应用

【6】成员函数和运算符重载

2.STL模板

【5】集合(set)

【5】列表(list),双端队列(deque),优先队列(priority_queue)

【5】多重集合(multiset)

【5】映射(map),多重映射(multimap)

【5】对(pair),元组(tuple)

2C++以外的其他高级程序设计语言可参照本部分内容

2.2.2数据结构

1.线性结构

【5】双端栈

【5】双端队列

【5】有序队列

【6】优先队列

【6】倍增表(ST表)

2.集合与森林

【6】等价类

【6】并查集

【6】树与二叉树的转化——孩子兄弟表示法

【6】线段树与树状数组

【6】字典树(trie树)

【7】笛卡尔树

【8】二叉平衡树AVL、treap、splay等

【8】基环树

4.常见图

【5】稀疏图

【6】偶图(二分图)

【6】欧拉图

【6】有向无环图

【7】连通图与强连通图

【7】重连通图

5.哈希表

【5】数值哈希函数构造

【6】排列哈希函数构造

【6】字符串哈希函数构造

【6】哈希函数冲突的常见解决方法

2.2.3算法

1.复杂度分析

【6】空间复杂度分析

2.基础算法

【6】分治算法

3.排序算法

【5】归并排序

【5】快速排序

【6】堆排序

【6】树形选择排序(锦标赛排序)

【5】桶排序

【6】基数排序

【5】字符串匹配算法——KMP

5.搜索算法

【6】搜索的剪枝优化

【6】记忆化搜索

【7】启发式搜索

【7】双向宽度优先搜索

【7】迭代加深搜索

【8】搜索对象的压缩存储

【6】Prim和Kruskal等求最小生成树算法

【7】求次小生成树算法

【6】Dijkstra、bellmanford、SPFA等求单源最短路算法

【7】求单源次短路径算法

【6】Floyd-Warshall算法求任意两点间的最短路和传递闭包

【6】有向无环图的拓扑排序算法

【6】求欧拉道路和欧拉回路算法

【6】二分图的构造及其判定算法

【6】最近公共祖先

【7】求强联通分量算法

【7】强连通分量的缩点算法

【7】求割点、割边算法

【6】树型动态规划

【7】状态压缩动态规划

【8】动态规划的常用优化

2.2.4数学

1.高中数学

【5】代数

【6】解析几何

【6】立体几何

2.初等数论

【5】同余式

【7】欧拉定理和欧拉函数

【7】费马小定理

【7】威尔逊定理

【7】裴蜀定理

【7】逆元

【7】扩展欧几里得算法

【7】孙子定理(即中国剩余定理)

3.组合数学

【6】可重集排列

【6】可重集组合

【6】错排列、圆排列

【6】鸽巢原理

【6】二项式定理

【7】容斥原理

【7】卡特兰数

4.线性代数

【5】矩阵概念

【6】特殊矩阵:稀疏矩阵,三角矩阵,对称矩阵

【6】矩阵的初等变换

【6】矩阵的加减乘和转置运算

【7】线性方程组的高斯消元法

2.3NOI级

2.3.1C++程序设计3

1.【8】STL模板:容器(containers)、迭代器(iterators)、空间配置器(allocators)、配接器(adapters)、算法(algorithms)、仿函数(functors)

THE END
1.路径规划基于matlab粒子群算法栅格地图最短路径规划含Matlab源码1.2.1基本思想 粒子群算法通过设计一种无质量的粒子来模拟鸟群中的鸟,粒子仅具有两个属性:速度和位置,速度代表移动的快慢,位置代表移动的方向。每个粒子在搜索空间中单独的搜寻最优解,并将其记为当前个体极值,并将个体极值与整个粒子群里的其他粒子共享,找到最优的那个个体极值作为整个粒子群的当前全局最优解,粒子https://blog.csdn.net/TIQCmatlab/article/details/115014184
2.算法与程序设计思想(精选8篇)《算法与程序设计思想》教学案例1 一、教学目标 1.知识与技能: 求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法: 利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。 https://www.360wenmi.com/f/fileavgfb18k.html
3.基于FPGA的FIR数字滤波器设计FPGA元器件在高速并行处理和数据传输中有独特优势,FPGA正在前端信号处理中越来越多地代替ASIC和DSP。我们需要的就是这种设计周期短,功能密度高,重组时间短的元器件。本文在FPGA元器件的基础上,实现现代FIR数字滤波器功能。并且研究多种快速的FIR数字滤波器的理论设计思想和程序设计方法。 https://www.eet-china.com/mp/a309942.html
4.C语言常见排序算法归并排序C语言归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法 (Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序 列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 1.2 算法思想 到这里,我们可以得到一https://www.jb51.net/article/255354.htm
5.一种基于LSD改进的室内直线特征匹配算法2.2 Light-LSD算法设计思想 针对室内长廊场景下存在大量垂直线段特征,改进算法的主要任务就是用尽可能少的线段特征描述出室内结构,原版LSD 造成大量冗余线段特征的原因是大量长短不一的短线段描述了图像中的同一处线特征。如图10 所示,原版LSD 会在图像中物体边缘处产生多条短线段,但理想情况下只应该有一条长线段紧紧https://www.fx361.com/page/2022/0725/10775281.shtml
6.程序=数据结构+算法《禅与计算机程序设计艺术》/陈光剑“数据结构和算法是过去 50 年来最重要的发明之一,它们是软件工程师需要了解的基础工具。”《Think Data Structures: Algorithms and Information Retrieval inJava》(Allen B.Downey) 基本数据类型 道生一,一生二,二生三,三生万物。 在计算机程序设计的世界里,先有基本数据类型,复合组装成复杂对象类型,不同对象之间https://cloud.tencent.com/developer/article/1815180
7.算法与程序设计课教学反思与建议.doc算法与程序设计课教学反思与建议.doc,算法与程序设计课教学反思与建议 算法与程序设计作为信息技术课程中的选修模块,其内容在广度和深度上都具有较高的要求。课标中对本模块的教学目标表述为“体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题https://max.book118.com/html/2018/0528/169137262.shtm
8.网络工程专业人才培养方案(2022)3. 工程基础知识。掌握从事网络工程专业所需的数字电路与逻辑设计、计算机组成原理、程序设计、算法与数据结构、软件工程概论、数据库原理与技术等基础知识。 4. 网络工程专业知识。掌握从事网络工程专业所需的计算机网络原理与技术、操作系统、信息安全导论、物联网技术基础、网络安全技术、网络互连技术、无线网络技术、网https://www.csust.edu.cn/jtxy/info/1148/20900.htm
9.《算法与程序设计》课堂教学教材组织方案《算法与程序设计》课堂教学教材组织方案 一.课堂教学教材组织方案简介 《算法与程序设计》是高中信息技术课程的选修模块之一。通过本课程的学习,让学 生体验算法思想、了解算法和程序设计在解决问题过程中的地位和作用,并能从简单问题出 发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。https://doc.mbalib.com/view/076091718f8ad96a60434cc3a43481f7.html
10.系列文章分类汇总《程序员修炼之道》解读1 会计学包含的两种程序设计思想 在【编程一生】公众号留言:666 可获取经典电子书。 三言 三言集锦6|不断规划与寻找自己的人生,想法把自己变重要 三言周集锦|评估一个事情要比去理解你评估了什么容易 三言周集锦|一个人写的烂软件将会给另一个人带来一份全职工作 三言周集锦|考虑可维护性https://maimai.cn/article/detail?fid=1717206459&efid=rjkjp3XnQ3Cilaj-ZIoEXw
11.2024年四川专升本计算机考试大纲公布,包含考试内容参考书目了解程序设计的基本思想。掌握程序设计的基本结构(顺序结构、选择结构、循环结构)。 3.程序流程图 了解流程图的基本概念和应用。理解累加、累乘、顺序查找、二分查找、冒泡排序算法的思想。掌握根据流程图判断算法功能、得出算法结果的方法。 六、数据库技术 https://www.exueshi.com/news/6-30991
12.高中信息技术课程标准本模块旨使学生进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。本模块为选修模块。 本模块的教学,应注意与数学课程中有关内容的衔接,要强调理论与实践的结合,引导学生注意寻找、发现身边的实际问题,进而https://www.fqkhzx.cn/index/article/view/id/94.html
13.程序员必须要知道的8种常用算法思想(转)寻觅左岸③ 递归算法通常显得很简洁,但是运行效率较低,所以一般不提倡用递归算法设计程序。 ④ 在递归调用过程中,系统用栈来存储每一层的返回点和局部量。如果递归次数过多,则容易造成栈溢出,所以一般不提倡用递归算法设计程序。 分治算法思想 分治算法也采取了各个击破的方法,将一个规模为N的问题分解为K个规模较小的子https://www.cnblogs.com/linxw-blog/p/10500570.html
14.计算机实验报告3.2算法设计思想与算法实现步骤 3.3程序核心代码,程序调试过程中出现的问题及解决方法 3.4 程序运行的结果 4、实验总结 4.1实验结果分析及问题讨论 4.2实验总结心得体会 注解:实验总结的内容根据不同学科和类型实验要求不一样,一般理工科类的实验需要对实验结果进行分析,并且对实验过程中问题进行讨论;在计算机上进行的编https://www.ruiwen.com/shiyanbaogao/5615610.html
15.程序设计基础清华大学基本的算法思想,如排序、查找、筛法、递推、递归、动态规划等; 文件创建与读写操作,以及各种应用。 本课程在教学过程中,将采用任务驱动方式,培养学生用程序设计语言解决实际问题的能力;强调在解题实践中掌握程序设计的基本概念、基本思想和基本方法;突出对编程思想的阐述和计算思维的训练;平时作业与测验考试均使用上机解https://www.xuetangx.com/courses/course-v1:TsinghuaX+30240233X_2015_T2+sp/about
16.程序设计的思想程序设计的思想是程序设计过程中的核心,它指导着程序员如何思考和解决问题。下面我们将探讨程序设计的几个关键思想。 1. 问题分解 程序设计始于问题分解。将复杂问题分解成更小、更易于管理的部分是程序设计的基础。这种分解有助于理解问题的结构,并为编写代码提供清晰的路径。 2. 抽象思维 抽象思维是程序设计中不可https://wenku.baidu.com/view/f1353f30e63a580216fc700abb68a98271feac8b.html
17.带你入门动态规划算法?动态规划(Dynamic Programming,DP)是算法设计思想中最难也是最有趣的部分。掌握动态规划算法,对于大厂面试是必不可少的。有接触过DP的小伙伴也许会联想到许许多多的名词,如什么状态转移方程什么的;要不就想到教材书上严谨而又晦涩难懂的对于动态规划的介绍;也有人想到高中的通项公式或数列题等等,但是左看右看都https://www.jianshu.com/p/5793f25a006d