CCF青少年计算机程序设计评级标准算法
一级标准数组
定义:了解什么是计算机程序,可以编写计算机程序解决简单问题。网络
知识要求:数据结构
一、 程序的基本结构。数据结构和算法
二、 标识符和关键字。ide
三、 基本数据类型。函数
四、 常量和变量。学习
五、 算术表达式和关系表达式。测试
六、 整除,求余运算,经常使用数学函数。优化
七、 赋值语句,输入输出语句,复合语句,条件语句(不嵌套),循环语句(不嵌套)。
能力要求:
一、 能用天然语言描述解决简单问题的方法和步骤。
二、 能用顺序,分支,循环语句实现知识要求中的方法和步骤,编写完整程序。
三、 初步理解算法的意义。
题例:
试题名:求最小,最大数
试题描述:
给出N个数,请找出这N个数中的最小数和最大数。
输入数据:
第1行,一个整数n,n<=1000。
接下来的一行,包含n个数,两个数之间用一个空格分隔。
输出数据:
第1行,最小数。
第2行,最大数。
输入样例:
4
1 2 3 4
输出样例:
1
4
二级标准
定义:了解什么是算法,可以用程序设计语言实现简单算法,解决问题。
知识要求:
一、 逻辑表达式。
二、 条件嵌套,循环嵌套,数组。
三、 枚举,简单排序,简单查找算法。
四、 素数与合数,最大公约数,最小公倍数,互质数。
能力要求:
一、 能用简单枚举算法解决实际问题,能对数据进行简单排序和查找。
二、 具有独立编写和调试简短程序的能力。
题例:
试题名:求第k小数
试题描述:
给出N个数,请找出第K小的数并输出该数值。
输入数据:
第1行,两个整数n,k,n,k<=1000。
接下来的一行,包含n个数,两个数之间用1个空格分隔。
输出数据:
只有1行,为第k小数。
输入样例:
4 3
1 2 3 4
输出样例:
3
三级标准
定义:具备较强的程序实现能力,使用一种计算机程序设计语言编写程序,解决问题。
知识要求:
一、 数制及其转化,信息编码,位运算。
二、 字符串类型。
三、 子程序。
四、 递归。
五、 逻辑运算,整数的质因数分解,随机函数。
六、 筛选法,欧几里得算法
能力要求:
一、 全面掌握一种计算机程序设计语言。
二、 具备运用简单数学知识编写程序解决问题的能力。
题例:
试题名:分解质因数
试题描述:
给一个整数N,将N写成质因数的乘积。
输入数据:
一个整数n,n<=100000。
输出数据:
质因数乘积表达式(请将质因数按从小到大顺序输出)
输入样例:
12
输出样例:
12=2*2*3
四级标准(NOIP普及组全国前70%)
定义:了解几种经常使用的算法,并运用这些算法编写程序,解决问题。
知识要求:
一、 结构类型,文件操做。
二、 数据类型的内在含义。
三、 贪心法,递推,回溯法,模拟算法。
四、 简单的字符串处理。
五、 集合及集合的运算,加法原理和乘法原理,简单的排列和组合。
能力要求:
一、 能根据实际额问题选择合适的数据类型。
二、 能运用贪心、递推、回溯、模拟等算法解决实际问题。
三、 能独立设计简单的测试数据,测试本身程序的正确性。
题例:
试题名:校门外的树
详见各oj,laoj也有。
五级标准(NOIP普及组全国前40%)
定义:掌握简单数据结构知识,并结合已学算法和数学知识编写程序,解决问题。
知识要求:
一、 指针类型。
二、 通常线性表,队列,堆栈,二叉树的存储和遍历。
三、 排列和组合,高精度数值的处理。
四、 二分算法,快速排序,深度优先搜索,宽度优先搜索,简单动态规划。
五、 圆排列,可重集排列,鸽笼原理,素因数分解,幂函数,指数函数,对数函数,三角函数,模运算,不等式基础知识。
能力要求:
一、 能运用经常使用算法和简单数据结构解决实际问题。
二、 能从算法本质出发,分析相关算法之间的本质联系。
三、 具有初步的数学建模能力。
题例:
试题名:摆花
详见NOIP2013普及组
六级标准(NOIP提升组全国前50%)
定义:掌握基本的数据结构知识,可以根据实际需求设计算法编写程序,解决问题。
知识要求:
一、 树、图的存储。
二、 哈希表、集合数据结构。
三、 图的最短路,生成树算法,有向图的拓扑排序算法。
四、 动态规划的常见模型,分治策略,各类排序算法。
五、 可重集组合,二项式定理,数列与级数,概括与递推,容斥原理,函数的连续性、函数的单调性和极值。
能力要求:
一、 能对一些算法和数据结构估算时间复杂度和空间复杂度。
二、 能根据实际问题的模型选择合适的算法和数据结构来解决问题。
三、 具有知识收集和知识管理的能力。
题例:
试题名:最优贸易
详见NOIP2009提升组
七级标准(NOIP提升组全国前20%)
定义:综合运用算法和数据结构编写程序,解决问题。
知识要求:
一、 并查集,线段树,哈弗曼树,二叉排序树,二叉堆。
二、 图的连通性算法,最短路,最小生成树的优化算法,二分图的构造、断定及匹配,搜索算法的优化,扩展欧几里得算法。
三、 中国剩余定理,剩余类,几率基础知识,解析几何基础知识。
能力要求:
一、 能根据时间和空间复杂度的要求灵活构造算法和数据结构解决实际问题。
二、 具有较强的程序代码实现能力。
三、 具有较强的概括、总结和表达能力。
题例:
试题名:关押罪犯
详见NOIP2010提升组
八级标准(NOI铜牌)
定义:掌握高级数据结构知识,能运用恰当算法编写程序,解决较复杂问题。
知识要求:
一、 树状数组,字典树,优先队列,平衡树。
二、 网络流算法,复杂的分治思想,树形动态规划,状态压缩动态规划,二分图的匹配,启发式搜索。
三、 矩阵概念及其基本运算,线性方程组的解法,迭代法,费马小定理和欧拉定理,母函数。
能力要求:
一、 能针对复杂问题创建清晰的数学模型。
二、 能运用数学知识、高级数据结构和算法解决复杂的问题。
三、 能根据须要,开展基于写做的学习和研究。
题例:
试题名:能量采集
详见NOI2010
九级标准(NOI银牌)
定义:具备对问题进行抽象和数学建模能力,能选用合适的数据结构和算法编写程序,解决较难问题。
知识要求:
一、 块状链表,后缀数组,后缀树,复杂的线段树。
二、 动态规划优化,模拟退火算法。
三、 计算几何基础知识(点积、叉积、凸包、半平面等知识及应用),数学指望
能力要求:
一、 能针对疑难问题创建清晰的数学模型。
二、 能灵活运用数学知识、高级数据结构和算法解决疑难问题。
三、 具有发现问题、解决问题的探索研究能力。
题例:
试题名:直线和点
文件名:line
试题描述:
平面的n条直线将平面分割成了若干区域,给出m个点,求每一个点所在区域的面积。
为了防止出现面积无穷大的状况,有额为的四条直线框定了平面区域的大小,分别是x=L,y=L,x=-L,y=-L。其中L是给定的正实数,全部的点都在这个框定的区域内。
另外为了防止精度问题,任意一个点到任意一条直线的距离>10^-7。
输入数据:
输入文件名为line.in。
第一行两个正整数和一个正实数,n,m,L,意义如上所述。
第2~n-1行每行三个实数A,B,C表示直线的方程为Ax+By+C=0。
第n+2~n+m+1行每行两个实数x,y表示点的坐标。
输出数据:
输出文件名为line.out。
按输入的顺序输出每一个点所在的区域面积,每一个一行,保留2为小数。
输入样例:
2 4 3
1 1 -1
-1 1 -1
0 2
-2 1
2 1
0 0
输出样例:
4.00
8.50
8.50
15.00
数据范围:
对于20%的数据,n,m<=10。
对于40%的数据,n,m<=300。
对于100%的数据,n<=500,m<=100000。
对于100%的数据,输入数据的绝对值<=10^7且最多保留2位小数
十级标准(NOI金牌)
定义:具备必定的提出问题、解决问题的研究能力,能构造算法与数据结构,解决开放性问题。
知识要求:
一、 最小树形图,自动机,动态树,树套树,通常图的匹配。
二、 双重动态规划,基于连通性的动态规划,线性规划,极大极小搜索算法。
三、 三维计算几何,组合游戏中的NIM问题和SG函数,群的概念,置换群,Burnside引理,Polya原理,莫比乌斯反演定理,FFT。
能力要求
一、 具有创造性地运用数据结构和算法解决开放性问题的能力。
二、 具有很强的代码编写能力。
三、 具有提出问题、并开展相关研究的创新能力。
题例:
试题名:管道取珠
详见NOI2009