·算法」 纲要




































基本

C/C++、STL(vector、set、map、queue、string、algorithm)

枚举、贪心、递归、分治、递推、模拟

构造、位运算、常数优化

数据结构

队列、堆、栈、链表

排序(插入、冒泡、快速、归并、堆、桶、基数)

二分查找、散列表、并查集、哈夫曼树

排序二叉树、左偏树、平衡树(Splay/Treap/SBT)

树状数组、线段树、归并树、划分树、主席树、树套树

树链剖分、动态树

1/2维RMQ、LCA(在线/离线)、稀疏表、字典树

字符串

KMP、扩展KMP

AC自动机

后缀树、后缀数组、后缀自动机

LCP随机化算法

最小表示法

搜索

DFS、BFS、剪枝、双向宽搜

迭代加深、A*、ID-A*

Dancing-links

爬山法、模拟退火、遗传算法

数学

进制转换、表达式求值

二分、三分

概率论、微积分

高精度(加减乘除模开方)

高精实数、分数

快速幂、矩阵、矩阵链乘

多项式求根、牛顿迭代

高斯消元解线性方程组

组合数学、排列组合计数

容斥原理、抽屉原理、mobius反演

置换群、burnside 引理、Polya定理、母函数

卡特兰数、斯特林数

傅立叶变换(大数乘法)

半平面交解二元线性规划、单纯形法解线性规划

约瑟夫问题

0/1分数规划

数论

GCD、扩展欧几里德

筛法求素数、素数判定

同余方程、中国剩余定理

大素数测试、分解

欧拉函数、积性函数、法兰数列

逆元、离散对数

图论

基本概念(DFS生成树上边,桥,割点,割,双连通分量)

图的表示(矩阵、邻接表)

最短路(Dijkstra(+heap)、Floyd、Bellmen-ford、Spfa)、传递闭包

最小生成树

强联通分量(+缩点)

拓扑排序

桥、边双连通分量及性质

割点、点双连通分量

度限制生成树、次小生成树、最优比例生成树

最小树形图

次短路(Dijkstra)、K短路(A*)

差分约束系统

2-SAT

欧拉路径(回路)、汉密尔顿路(回路)

网络流(SAP、Dinic)

最大流最小割、平面图最小割、全局最小割Stoer-Wagner算法

最小费用最大流

有流量上下界的网络流(费用流)

无源汇的网络流

二分图匹配、二分图最大权匹配

任意图匹配(带花树)

最大权闭合子图、最大密度子图

最大团、最大独立集

计算几何

基本操作:

  叉积、点积

  向量平移、旋转

  线段(直线、射线)相交的判断、求交点

  点、线段、直线、平面关系、距离

  点在多边形内/外/上

  多边形周长、面积

二维凸包

最近点对、最近圆对

旋转卡壳

计算距离:凸多边形直径、形宽,凸多边形间的最大、最小距离

外界矩形:最小周长、最小面积外界矩形

三角剖分:洋葱、螺旋、四边形剖分

凸多边形属性:凸包合并、找公切线、临界切线、凸多边形相交、凸多边形矢量和

最薄截面:最薄横截带

三角形

球面距离

三维几何基本操作

向量平移、旋转

点、线、面

三维凸包

点集的最小覆盖圆

最大空心矩形

圆的面积交/并

圆与圆的位置关系

圆与线段、多边形的关系、面积

半平面交

自适应simpson公式

steiner生成树

动态规划

记忆化搜索

最长公共子序列

最长上升序列

背包九讲(0/1、完全、依赖、分组、泛化物品)

四边形不等式优化、斜率优化、单调队列(1D\1D)

数据结构优化(线段树优化、堆优化、左偏树优化)

树形DP、自动机DP

数位DP、状态压缩DP、插头DP、广义插头(最小表示)

博弈论

Bash Game、Wythoff Game

NIM、SG函数

搜索、极大极小搜索

无向图删边博弈

其他

历法、日期汉诺塔

离散化

找规律

打表

时间: 2024-09-30 18:09:41

·算法」 纲要的相关文章

「C语言」「算法」访问数组的多种方式

1 #include <stdio.h> 2 3 //分别用数组名和指针变量,以下标法和指针法输入和输出数组的所有元素 4 5 int main(){ 6 int i=0; 7 int array[6]; 8 int *p=array; 9 printf("\n Please input array[6]: \n"); 10 while(p<(array+6)) 11 scanf("%d",p++); 12 printf("\n Outp

「C语言」「算法」根据三边判断三角形类型

1 #include <stdio.h> 2 3 //根据三边长判断是否能组成三角形,分别以边长和角度看能组成什么三角形 4 5 int main(){ 6 int a,b,c; 7 printf("请输入三边的长,并以逗号隔开:\n"); 8 scanf("%d,%d,%d",&a,&b,&c); 9 if(a<=0 || b<=0 || c<=0){ 10 printf("请输入正数");

「C语言」「算法」输出指定范围内的素数

#include <stdio.h> //输出指定范围内的素数 int main(){ int a,b; int i,j; printf("请输入整数范围并用空格隔开:\n"); scanf("%d%d",&a,&b); for(i=a;i<=b;i++){ for(j=2;j<=i-1;j++) { if(i%j==0) break; } if(j>=i-1) printf("%d ",i); }

「C语言」「算法」多种方法求一个数的位数及逆序数

1 #include <stdio.h> 2 3 4 int main() 5 { 6 int a,b[5]={0,0,0,0,0},i=0,len=0; 7 scanf("%d",&a); 8 while(i<5) 9 { 10 b[i]=a%10; 11 a=a/10; 12 len++; 13 if(a==0) 14 break; 15 i++; 16 } 17 printf("%d\n",len); 18 for(i=len-1;i

「C语言」「算法」数组的冒泡排序

1 #include<stdio.h> 2 #define N 10 3 4 //数组的冒泡排序 5 6 void sort(int b[]){ 7 int i,j; 8 for(i=0;i<N;i++){ 9 for(j=i+1;j<N;j++){ 10 if(b[i]>b[j]){ 11 b[i]^=b[j]; 12 b[j]^=b[i]; 13 b[i]^=b[j]; 14 } 15 } 16 } 17 } 18 19 int main() { 20 int a[N];

使用python实现森林算法方法步骤详解

本文和大家分享的是使用python实现森林算法相关内容,一起来看看吧,希望对大家学习python有所帮助. 算法描述 随机森林算法 决策树运行的每一步都涉及到对数据集中的最优**点(best split point)进行贪婪选择(greedy selection). 这个机制使得决策树在没有被剪枝的情况下易产生较高的方差.整合通过提取训练数据库中不同样本(某一问题的不同表现形式)构建的复合树及其生成的预测值能够稳定并降低这样的高方差.这种方法被称作引导**算法(bootstrap aggrega

数据结构与算法1

数据结构与算法(一),概述 转载请注明出处:http://www.cnblogs.com/wangyingli/p/5919297.html 数据结构学了有一年的时间了,但是一直没有好好的总结一下,现在回想起来,感觉好像都不怎么记得了.所以接下来一段时间我将重新学习一下,算是温故而知新了.本着「分享是一种美德」的精神,我将把我的学习总结记录下来,并与大家分享. 本节的主要内容有: 一.数据结构 1.定义 2.关于数据结构的几个术语 3.逻辑结构与物理结构 二.抽象数据类型 三.算法 四.算法的复

从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 前言 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经网络:3.编程艺术第28章.你看到,blog内的文章与你于别处所见的任何都不同.于是,等啊等,等一台电脑,只好等待..”.得益于田,借了我一台电脑(借他电脑的时候,我连表示感谢,他说“能找到工作全靠你的博客,这点儿小忙还说,不地道”,有的时候,稍许感受到受人信任也是一种压力,愿我不辜负大家对我的信任)

Raft一致性算法

转自 http://blog.csdn.net/cszhouwei/article/details/38374603 Why Not Paxos Paxos算法是莱斯利·兰伯特(LeslieLamport,就是 LaTeX 中的”La”,此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法.由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后1998年重新发表到ACM Transactions on Computer Systems上(The Part-TimePa