【ACM算法纲要】【转自ALPC】


基本


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函数

搜索、极大极小搜索

无向图删边博弈


其他

历法、日期汉诺塔

离散化

找规律

打表

时间: 2025-01-16 17:28:51

【ACM算法纲要】【转自ALPC】的相关文章

ACM,算法

ACM,算法 描述 最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数.他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少? 输入 有多组测试数据.第一行一个整数n,表示有n组测试数据.接下来的每行有一个整数m. 输出 输出第m个小光棍数. 样例输入 1 1 样例输出 471 #include <iostream> #include <strin

如何出一道ACM算法题?

本文背景 本人算法能力一般,但是为省赛和区域赛网络赛出过几道题,总结了一些自己的经验,希望与大家分享.本文不涉及具体的算法题,都是一些理论性的想法和一些建议. 题源 如果你能在没有题源的情况下自己想出一道新的题目,想必也很难看到这篇文章了.题源是出题的第一步,相信到了需要出题的地步,正在看这篇博客的你一定有自己熟悉的刷题网站,而这个网站可以作为你的题源,因为熟悉.本人推荐两个题源网站: 英文题源网站 Codeforce 中文题源网站 51nod 拿到的题源一定要确保只能能够写出所有解法,可能题目

ACM算法总结及刷题参考

参考:http://bbs.byr.cn/#!article/ACM_ICPC/11777 OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一.基本算法: (1)枚举. (poj1753,poj2965)    (2)贪心(poj1328,poj2109,poj2586)    (3)递归和分治法.     (4)递推.     (5)构造法.(po

ACM 算法实现

实验一 统计数字问题 1.问题描述:一本书的页码从自然数1 开始顺序编码直到自然数n.书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0.例如,第6 页用数字6 表示,而不是06 或006 等.数字计数问题要求对给定书的总页码n,计算出书的全部页码中分别用到多少次数字0,1, 2,…,9.2.题目分析:考虑由0,1,2,…,9组成的所有n位数.从n个0到n个9共有个n位数,在这些n位数中,0,1,2,…,9每个数字使用次数相同,设为. 满足如下递归式:由此可知,.据此,可从低位向高位进行

ACM算法

一.数论算法 1.求两数的最大公约数 2.求两数的最小公倍数 3.素数的求法 A.小范围内判断一个数是否为质数: B.判断longint范围内的数是否为素数(包含求50000以内的素数表): 二.图论算法 1.最小生成树 A.Prim算法: B.Kruskal算法:(贪心) 按权值递增顺序删去图中的边,若不形成回路则将此边加入最小生成树. 2.最短路径 A.标号法求解单源点最短路径: B.Floyed算法求解所有顶点对之间的最短路径: C. Dijkstra 算法: 3.计算图的传递闭包 4.无

算法纲要

基本 枚举.贪心.递归.分治.递推.模拟 STL(pair.vector.set.map.queue.string.algorithm) 构造.位运算.常数优化 数据结构 队列.堆.栈.链表 排序(插入.冒泡.快速.归并.堆.桶.基数) 二分查找.散列表 并查集.哈夫曼树 排序二叉树.左偏树.平衡树(Splay/Treap/SBT) 树状数组.线段树.归并树.划分树.主席树.树套树 树链剖分.动态树 1/2维RMQ.LCA(在线/离线).稀疏表.字典树 字符串 KMP.扩展KMP AC自动机 后

ACM算法集锦

kurXX最小生成树 #include <iostream> #include <math.h> #include <algorithm> using namespace std; #define M 501 #define LIM 20000000 struct edg{ int u,v; int w; }all_e[M*M/2]; bool operator < (const edg &a,const edg &b){ return a.w&l

ACM算法目录

数据结构 栈,队列,链表 •哈希表,哈希数组 •堆,优先队列 双端队列 可并堆 左偏堆 •二叉查找树 Treap 伸展树 •并查集 集合计数问题 二分图的识别 •平衡二叉树 •二叉排序树 •线段树 一维线段树 二维线段树 •树状数组 一维树状数组 N维树状数组 •字典树 •后缀数组,后缀树 •块状链表 •哈夫曼树 •桶,跳跃表 •Trie树(静态建树.动态建树) •AC自动机 •LCA和RMQ问题 •KMP算法 ******************************************

ACM算法练习-——ZJU1164-Software CRC

具体的题目描述点此链接                http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1164 这道题,说实话 ,我不懂-.- 我先把这个代码粘在这,具体的这个原因我再研究研究~ 1 #include<stdio.h> 2 #define Generator 34943 3 4 int main() 5 { 6 unsigned char c,flag; 7 int count;//一行中的字符数 8 /