NOIP算法总结与复习

NOIP算法总结与复习

(看了看李总的蓝皮书,收获颇多,记下此文,以明志~~)

(一)数论

1、最大公约数,最小公倍数

2、筛法球素数

3、mod规律公式

4、排列组合数,错排

5、Catalan数

6、康托展开

7、负进制

8、中位数的应用

9、位运算

(二)高精度算法

1、朴素加法减法

2、亿进制加法减法

3、乘法

4、除法

5、亿进制读入处理

6、综合运用

(三)排序算法

1、冒泡

2、快排

3、堆排

4、归并

(四)DP

1、概念

2、解题步骤

3、背包类dp

4、线性dp

5、区间动态规划

6、坐标型动态规划(规则类dp)

7、资源分配型动态规划

8、树型动态规划

9、状态压缩的动态规划

10、动态规划的一般优化方法

(五)图论

1、Floyd-Warshall

2、Bellman-ford

3、SPFA

4、dijkstra

5、prim

6、kruskal

7、欧拉回路

8、哈密顿环

9、flood fill(求图的强联通分量)

10、最小环问题

11、Topological sort

12、次短路

13、次小生成树

(六)树

1、堆

2、二叉排序树

3、最优二叉树(哈夫曼树)

4、求树的后序遍历

5、并查集及应用

(七)分治

1、二分查找

2、二分逼近(注意精度问题)

3、二分答案

4、快排(见排序算法)

5、归并排序(见排序算法)

6、快速幂

(八)贪心

(九)搜索

(十)其它

1、离散化

2、KMP

3、字符串哈希

4、常用字符串函数过程

时间: 2024-10-16 21:26:05

NOIP算法总结与复习的相关文章

NOIP算法总结

前言 离NOIP还有一个星期,匆忙的把寒假整理的算法补充完善,看着当时的整理觉得那时还年少.第二页贴了几张从贴吧里找来的图片,看着就很热血的.旁边的同学都劝我不要再放PASCAL啊什么的了,毕竟我们的下一级直接学C++.即便我本人对C++也是赞赏有加,不过PASCAL作为梦的开始终究不能忘记.不像机房中其余的OIERS,我以后并不想学计算机类的专业.当年来学这个竞赛就是为了兴趣,感受计算机之美的.经过时迁,计划赶不上变化,现在尚处于迷茫之中,也很难说当时做的决定是对是错.然而我一直坚信迷茫的时候

noip级别模板小复习

不是很noip的知识点就不写了. dij什么的太easy就不写了. 缩点 注意\(Tarjan\)在缩边双和求强联通分量时候的区别. 一个要判断是否在栈内一个不要. 最后\(topsort\)来\(dp\),或者记忆化搜索,但是一定要记得初值为\(-1\). 考虑图不联通. 负环 考虑图不联通. 一开始\(dis=0\),判断最短路长度大于\(n\)会好一些. \(dfs\)型\(spfa\)是指数级的. ST表 注意是\(i\)到\(i+2^k-1\). 所以预处理的时候不要减1,因为已经减过

[算法第一轮复习] kruskal求最小生成树算法

最小生成树算法即MST,有kruskal,prim两种算法,这里主要介绍kruskal 什么是最小生成树? 对于一个图,保证其中每个点都可以连通的最小的花费 1.算法核心 贪心+并查集 2.算法实现过程 克鲁斯卡尔算法 假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林.之后,从网的边集 E 中选取一条权值最小的边,若该

[算法第一轮复习] 最短路算法之dijkstra

1.算法描述 dijkstra,一种求单源正权图上的最短路的算法 主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止 Dijkstra算法思想为:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将 加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中.在加入的过程中,总保持从源

MATLAB面向对象编程实现鱼群算法

计划10天完成初稿. day1 今天第一天的目标是安装好MATLAB,了解鱼群算法,并且复习MATLAB的知识. 这个MATLAB版本应该是比较基础的,不过对菜鸟来说应该足够了, 祭出网址: 下载及说明:http://www.pc6.com/softview/SoftView_4819.html#download 下载的百度云链接:http://pan.baidu.com/s/1AbsJk

机器学习Matlab实战之图像压缩————Kmeans算法

本系列来自于我<人工智能>课程复习总结以及机器学习部分的实验总结 Kmeans是机器学习中最经典的无监督学习聚类算法,本文复习了无监督学习定义和Kmeans算法,然后提出了一种基于Kmeans算法的图像压缩方案,并给出了其在Matlab中的实现 1.无监督学习 通过非标记数据样本(Xi→),i=1,...,N且Xi→∈,来学习发现这些无标记样本之间内在的相似联系,叫做无监督学习 无监督学习由于没有标记,那就不存在学习误差或奖惩函数来评估一个可行解,这是无监督学习和监督学习最大的差别 2.Km

Python版冒泡排序算法

0 为什么写本文 一方面对经典排序算法冒泡排序进行复习,另一方面通过实际应用来检验python基础知识的掌握情况,包括range函数.len函数.for循环.if语句.函数定义与调用.列表的排序等知识点.在实践中加深理解,达到学以致用.用以促学.学用相长的目的. 1 什么是冒泡排序 冒泡排序的基本思想是,将需要排序的元素看作是一个个"气泡",最小的"气泡"最快浮出水面,排在前面.较小的"气泡"排在第二个位置,依次类推.冒泡排序需要对数列循环若干次

排序算法C语言实现

大学有一门课程叫做数据结构,严蔚敏的课本,其中详细介绍了集中经典的排序算法,学习复习反复几次,但是直到现在仍然只记得名字了,所以想记录下来,随时复习直至牢记于心.经常面试的朋友知道,排序算法在面试中出现的频率很高,尤其是开发.算法等岗位,因为排序算法是算法的入门知识.排序算法的思想可以灵活应用到实际的开发中解决问题. 排序算法有哪几种 交换排序 1.冒泡排序 2.快速排序 插入排序 1.直接插入排序 2.希尔(shell)排序 选择排序 1.直接选择排序 2.堆(Heap)排序 归并排序 一.交

洛谷P3387 【模板】缩点

洛谷P3387 [模板]缩点 题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只计算一次. 输入输出格式 输入格式: 第一行,n,m 第二行,n个整数,依次代表点权 第三至m+2行,每行两个整数u,v,表示u->v有一条有向边 输出格式: 共一行,最大的点权之和. 输入输出样例 输入样例#1: 2 2 1 1 1 2 2 1 输出样例#1: 2 说