
NOIP大纲
liusu201601
这个作者很懒,什么都没留下…
展开
-
NOIP大纲整理:(一)常见问题与常用策略
数学类问题1. 精度处理(高精度、实数处理、各种浮点类型处理方法)2. 组合数学问题(斐波那契数列、第二类数、卡特兰数、Polya原理、排列组合计数、加法原理与乘法原理)3. 进制问题(特定二进制串的统计、二分查找、利用二进制进行路径、状态描述、二进制转换)4. 递推与递归关系(递推关系式、通项公式、数列、博弈问题)5. 数位、数字、特定数值的查找、统计(数值处理、质因子分解、...转载 2018-08-05 13:05:17 · 921 阅读 · 1 评论 -
NOIP大纲整理:(十)动态规划巩固与提高1:DP与记忆化搜索概念
记忆化搜索概念讲解经典例题:数字金字塔(Luogu 1216) 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 我们现在这里讨论搜索如何实现: 状态:目前在第x行第y列 行动:向左走,向右走 例如:一个底边为4的三角形共有八种状态: 我们按照一般的搜索思路,进行深度优先搜索:v...转载 2018-08-06 08:38:08 · 482 阅读 · 0 评论 -
NOIP大纲整理:(十)动态规划巩固与提高2:背包9讲
留着坑,下次再填,需要的自行百度就有。转载 2018-08-06 08:38:25 · 360 阅读 · 0 评论 -
NOIP大纲整理:(十)动态规划巩固与提高3:各种DP(有机会再细分类别)
、路径行走问题 经典例题:方格取数(Luogu 1004) 设有 N*N 的方格图 (N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 0。*某人从图的左上角的 A 点出发,可以向下行走,也可以向右走,直到到达右下角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字 0)。*此人从 A点到 B 点共走两次,试找出 2 条这样的路...转载 2018-08-06 08:38:38 · 1141 阅读 · 0 评论 -
NOIP大纲整理:(十一)图论详解
知识点罗列:1、图的存储: 1.1 邻接矩阵 1.2 邻接表2、树的遍历: 2.1 bfs 2.2 dfs3、无根树变有根树4、并查集5、最小生成树 5.1 k算法 5.2 p算法 5.3 最小生成树计数问题6、最短路径 6.1 floyd 6.2 d算法 6.3 spfa 6.4 bellmanford算法 7、拓扑排序8、联通分量9、欧拉回...转载 2018-08-06 09:06:09 · 1349 阅读 · 1 评论 -
NOIP大纲整理:(十二)数论详解
分类:一、数论 二、概率 三、代数 一、数论 1.数整数、自然数(大于等于0的整数)、正整数(大于0的整数)、负整数、非负整数、非正整数、非零整数、奇数偶数。 2.整除性设a,b∈Z,如果存在c∈Z并且a=bc,则称b|a(b为a的因子,“|”表示“能整除”) 3.质数如果一个数,只有1和自身作为因子的数,叫做质数(素数)。通论1:存在一个质数p,若p|...转载 2018-08-06 09:12:22 · 2178 阅读 · 0 评论 -
NOIP大纲整理:(十三)基础算法详解
知识点罗列:一、倍增思维: 1、倍增算法; 2、树上的LCA(最近公共祖先) ;3、快速幂二、分治思维:1、二分查找;2、归并排序; 3、快速排序三、贪心思维:四、搜索:1、三种不同的问题; 2、两种不同的方法:bfs、dfs;3、优化搜索的技巧 一、倍增算法:定义:用f[i][j]表示从i位置出发的2j个位置的信息综合(状态)一个小小的问题:为什么是2j而不...转载 2018-08-07 08:20:13 · 2366 阅读 · 0 评论 -
NOIP大纲整理:(十四)预处理与前缀和
一、预处理 所谓预处理,顾名思义,就是事先计算好需要的值或事先处理某些东西,有时候你会发现你做一个题目出现了TLE,原因就是重复的计算会导致效率不高(或者说你的预处理不够“优雅”)。 A、直接把结果预处理XTUOJ 1052题意:某一个数字集合定义如下:1.0属于这个集合;2.如果x属于这个集合,那么2x+1,3x+1也属于这个集合;3.集合只包含按增序排列的前1...转载 2018-08-07 08:20:23 · 1122 阅读 · 0 评论 -
NOIP大纲整理:(十五)尺取法与折半枚举
一、尺取法 尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要掌握这个技巧,是因为尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以尺取法是一种高效的枚举区间的方法,一般用于求取有一定限制的区间个数或最短的区间等等。当然任何技巧都存在其不足的地方,有些情况下...转载 2018-08-07 08:20:33 · 443 阅读 · 0 评论 -
NOIP大纲整理:(十六)反转问题与弹性碰撞
一、反转问题 算法概览:给定一个01串,现有翻转规则:翻转某一个位置时其后面2个位置也会跟着翻转,也就是每次翻转都会翻转3个连续的位置。要将01串全部翻转为0,求最小的翻转次数。形似这类题的问题叫做反转问题,也可以叫开关问题,对于这类题通常有以下的特点,思考一下就可以想到。 1、若某一个位置被翻转了n次,则其实际上被翻转了n%2次,因为翻转2k次相当与没翻转,翻转2k+1次相当于翻转了1次...转载 2018-08-07 08:20:45 · 647 阅读 · 0 评论 -
NOIP大纲整理:(十七)栈与双端队列的运用
一、栈的运用通过活用栈等简单的数据结构,可以巧妙地降低一些算法的复杂度。 POJ 2559题意:n个宽度为1,高度为h[i](1<=i<=n)组成的柱形图,求里面包含的长方形的最大面积; 思路:如果确定了长方形的左端点L和右端点R,那么最大可能高度就是min{h[i]|L<=i<R}(一般做题区间都是左闭右开,便于计算),时间复杂度O(n^3),考虑优化...转载 2018-08-07 08:21:05 · 436 阅读 · 0 评论 -
NOIP大纲整理:(十八)剪枝与坐标离散化
一、剪枝在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了搜索树中的某些“枝条”,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应当舍弃,哪些枝条应当保留的方法。 剪枝算法按照其判断思路可大致分成两类:可行性剪枝及最优性剪枝。 POJ2676给你一个9*9的九宫格,有部分已经填上了数字,要求将九宫格用1-9填满,每行中...转载 2018-08-07 08:21:14 · 528 阅读 · 0 评论 -
NOIP大纲整理:(六)字符串4:随机算法
随机算法随机生成树①随机生成一棵树:for(int i=2;i<=n;i++)/*随机生成一棵树*/{ cout<<rand()%(i-1)+1<<' '<<i<<endl;}//深度为lgn②随机生成一棵长毛的链:/*随机生成一棵长毛的链:1~n/2*/for(int i=2;i<=n/2;i++)...转载 2018-08-06 08:36:55 · 393 阅读 · 0 评论 -
NOIP大纲整理:(六)字符串2:KMP算法
2、KMP算法:快速查找子串KMP算法给定两个字符串A,B,判断T是否为S的子串(变式:寻找子串B在串A中的位置)。 要求一个O(|A|+|B|)的做法。 通常称A为目标串(或主串),B为模式串。 算法过程: 我们假设串A的长度为n,串B的长度为m,每个字符串的开头下标默认为1。 定义两个变量i和j,这两个变量共同表示:A[i-j+1~i]与B[1~j]均匹配,...转载 2018-08-06 08:36:19 · 453 阅读 · 0 评论 -
NOIP大纲整理:(六)字符串3:AC自动机
3、AC自动机有n个模式串,长度之和是|T|,有一个主串,长度是|S|,问哪些模式串是这个主串的子串(或者有多少个模式串在主串中出现过)? 解法一:直接跑n次KMP算法,时间复杂度:O(n×|S|)。 解法二:AC自动机,时间复杂度:O(|T|+|S|),对于n个串,构建trie树,在trie树上做KMP。 在这里我来详解一下AC自动机啊~ 首先我们定义一个指针,叫做“失配指针...转载 2018-08-06 08:36:29 · 444 阅读 · 0 评论 -
NOIP大纲整理:(零)历年2000-2016NOIP普及组题目分析
年份 题目名称 考查内容 难度 2000-2016年NOIP普及组复赛题目 2000 乘积最大 划分动态规划 ★★★ 2000 税收与补贴问题 数...转载 2018-08-05 13:07:51 · 7915 阅读 · 0 评论 -
NOIP大纲整理:(零)历年2000-2016NOIP提高组题目分析
年份 题目名称 考查内容 难度 2000-2016年NOIP提高组复赛题目 2000-A 进制转换 初等代数,找规律 ★ 2000-B 乘积最大 ...转载 2018-08-05 13:12:19 · 5097 阅读 · 1 评论 -
NOIP大纲整理:(二)文件读写与数论基础
文件读入读出假设题目名为“add”,那么文件夹名为“add”,c++程序名为“add.cpp”,读入文件名为“add.in”,输出文件名为“add.out”。四个的拼写均不可有误,包括大小写差异。千万不要调试后就忘记修改文件读入读出了。 #include<cstdio>int main(){ freopen("add.in","r",stdin);//read ...转载 2018-08-05 13:27:19 · 1296 阅读 · 1 评论 -
NOIP大纲整理:(三)读写外挂与高精度模板
读入输出挂(提高组才需要,普及以下,只要了解一下机制就可以了)读入输出挂就是逐个字符地读入数据,从而让读入更加快速。输出挂的原理也是一样的,都是通过将输出数字变成输出字符以加快速度。当然输入输出外挂一般用在大量输入输出的情况下,这样性价比才高一些,否则得不偿失。暂时代码是转载的,以后有机会会更新,看不懂请跳过void Rd(int &res){ res=0;char ...转载 2018-08-05 13:41:07 · 867 阅读 · 0 评论 -
NOIP大纲整理:(四)图论基础与程序对拍
图论算法:1、图的遍历:宽搜:bfs 队列的使用:很少单独出题,结合邻接表,比较容易理解2、图的遍历:深搜:dfs 递归的使用:很少单独出题,结合邻接表,比较容易理解3、最小生成树:Kruskal+prim算法 已经整理了一些入门题目:最小生成树基础4、最短路径:spfa:邻接表的应用 邻接表的使用+宽搜思维+循环队列的应用。算是入门必背题...转载 2018-08-05 14:23:15 · 749 阅读 · 0 评论 -
NOIP大纲整理:(五)排序模板与算法复杂度分析
排序算法:常用(有用)的排序思维,一般就以下四种,中后期也可以根据实际情况用sort1、快速排序(二分+递归)暂时代码是转载的,以后有机会会更新,看不懂请跳过#include<cstdio>inline void Rd(int&res){ res=0;char c; while(c=getchar(),c<48); dores=...转载 2018-08-05 15:36:21 · 671 阅读 · 0 评论 -
NOIP大纲整理:(六)字符串1:trie树(字典树)
1、trie树(字典树):将字母挂在一棵树上1.定义:通过字符串建成一棵树,这棵树的节点个数一定是最少的。例如:4个字符串"ab","abc","bd","dda"对应的trie树如下:其中红色节点表示存在一个字符串是以这个点结尾的。 一个性质:在树上,两个点u,v满足u是v的祖先,那么u代表的字符串一定是v代表的字符串的前缀。 2.Trie树的插入:可以从根节点出...转载 2018-08-05 20:14:55 · 628 阅读 · 0 评论 -
NOIP大纲整理:(七)STL容器
STL容器库STL是C++自带的一个容器库,说白了就是可以直接套用的模板STL 容器是一些模板类,提供了多种组织数据的常用方法。常用的STL容器包括pair(组合)、list(列表,类似于链表)、vector(向量,类似于数组)、priority_queue(优先队列)、set(集合)、map(映射)、stack(栈)等,通过模板的参数我们可以指定容器中的元素类型。 关键字 ...转载 2018-08-06 08:37:11 · 1231 阅读 · 0 评论 -
NOIP大纲整理:(八)STL函数算法
STL算法STL 算法是一些模板函数,提供了相当多的有用算法和操作,从简单如for_each(遍历)到复杂如stable_sort(稳定排序),头文件是:#include <algorithm>。常用STL 算法库包括:sort快速排序算法、二分查找算法、枚举排列算法等。1、 sort排序系列sort:对给定区间所有元素进行排序(全排)stable_sort:对给定区间所有...转载 2018-08-06 08:37:25 · 988 阅读 · 0 评论 -
NOIP大纲整理:(九)树结构的模板*3
1、树状数组暂时代码是转载的,以后有机会会更新,看不懂请跳过例:HDU 1166#include<stdio.h>#include<math.h>const intMAX = 50010 * 4;intsegment[MAX];voidpushUp(int root){ segment[root] = segment[root * 2] + s...转载 2018-08-06 08:37:56 · 483 阅读 · 0 评论 -
NOIP学习大纲整理
题目 内容 0 00-16年真题整理 普及组题目分析、提高组题目分析 1 (一)常见问题与策略 数学类、字符、字串类、统计类、模拟类、搜索类、最优化、图论 2 (二)文件读写与数论基础 数论基础、文件输出输出 3 (三)读写外挂与高精度模板 高精度+-*/的基础模板,读写加速的外挂 ...原创 2018-08-07 10:20:09 · 6679 阅读 · 3 评论