算法模板
一些基础算法。
FTOTL
一名成长中的学生
展开
-
SPLAY树
前言根据研究表明,90%的访问都是针对10%的元素。提高这90%的访问的效率,就明显改善了对整个访问的效率。核心思想:把最近访问过的结点提升到根,后续访问的深度将减小。把这种提升结点的操作称为“伸展Splay”。以伸展操作为基础的二叉排序树也就相应称为伸展树(Splay Tree)。开始基于前言中十分有用(坑爹 )的话,于是我们需要用SPLAY树来优化时间,即把刚操作的点引到根下,即S...原创 2019-01-30 14:21:07 · 857 阅读 · 1 评论 -
读入优化
inline void read(int &x){ x=0;char c=getchar();bool f=0; if(c=='-')f=1; while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} }原创 2017-12-12 17:02:55 · 344 阅读 · 0 评论 -
Treap
Treap=Tree+Heap Treap是 排序树 与 堆 的结合。#include&amp;lt;cstdio&amp;gt;#include&amp;lt;cstring&amp;gt;#include&amp;lt;cstdlib&amp;gt;using namespace std;#define INF 0x3FFFFFFF#define MAXN 500000原创 2018-02-08 20:51:22 · 287 阅读 · 0 评论 -
DFS模板
在网上找到了一个神奇的网站。算法笔记 DFS是一种十分重要也中用的算法。 对于大多数问题,只要用了DFS,都可以解决。 以下是我总结出来的关于它的一些思想。这是一个十分重要的框架,但只能重复搜索。Type solution[MAXN]; //保存解的数组void dfs(int i) { //当前搜索第i个阶段if (到达边界) { 检验solution是否是合法解...原创 2017-11-23 13:56:19 · 499 阅读 · 0 评论 -
割点和割边
定义 割点的定义(均在无向图中):在一个连通图中,如果有一个顶点集合,删除这个集合中的点以及相关的边之后,连通块的数量会增多.我们就称这个顶点集合为割点集合.如果这个点集合中只有一个点,那么这个点就叫做割点. 割边的定义(均在无向图中):在一个连通图中,如果删去其中一条边后,连通块的数量会增多,那么我们称这条边为桥或者是割边.例如这个图:A和B都是割点,其中A-B为桥或割边 ...原创 2018-03-10 22:34:44 · 11542 阅读 · 2 评论 -
二分图基本概念
定义首先先介绍一下什么是二分图。 二分图又称作二部图,是图论中的一种特殊模型。 设G=(V, E)是一个无向图。如果顶点集V可分割为两个互不相交的 子集X和Y,并且图中每条边连接的两个顶点一个在X中,另一个在Y 中,则称图G为二分图。 性质那么二分图有什么性质呢? 性质:当且仅当无向图G的每一个环(即回路、圈,英文为circle)的结数均是偶 数时, G才是一个二分图...原创 2018-02-08 20:49:28 · 2169 阅读 · 1 评论