摘要:
本文内容转载自Matrix67大神:http://www.matrix67.com/blog/archives/333除了字符串匹配、查找回文串、查找重复子串等经典问题以外,日常生活中我们还会遇到其它一些怪异的字符串问题。比如,有时我们需要知道给定的两个字符串“有多像”,换句话说两个字符串的相似度是多少。1965年,俄国科学家Vladimir Levenshtein给字符串相似度做出了一个明确的定义叫做Levenshtein距离,我们通常叫它“编辑距离”。字符串A到B的编辑距离是指,只用插入、删除和替换三种操作,最少需要多少步可以把A变成B。例如,从FAME到GATE需要两步(两次替换),从G 阅读全文
摘要:
1. 概述同splay tree一样,treap也是一个平衡二叉树,不过Treap会记录一个额外的数据,即优先级。Treap在以关键码构成二叉搜索树的同时,还按优先级来满足堆的性质。因而,Treap=tree+heap。这里需要注意的是,Treap并不是二叉堆,二叉堆必须是完全二叉树,而Treap可以并不一定是。2. Treap基本操作为了使Treap 中的节点同时满足BST性质和最小堆性质,不可避免地要对其结构进行调整,调整方式被称为旋转。在维护Treap 的过程中,只有两种旋转,分别是左旋转(简称左旋)和右旋转(简称右旋)。左旋一个子树,会把它的根节点旋转到根的左子树位置,同时根节点的右子 阅读全文
摘要:
#include<cstdio>#include<cstring>#define N 1010bool flag[N], a[N][N];int ans, cnt[N], group[N], n, vis[N];// 最大团: V中取K个顶点,两点间相互连接// 最大独立集: V中取K个顶点,两点间不连接 // 最大团数量 = 补图中最大独立集数 bool dfs( int u, int pos ){ int i, j; for( i = u+1; i <= n; i++){ if( cnt[i]+pos <= ans ) return 0; if( a.. 阅读全文
摘要:
训练专题以及解题思路... 持续更新 Train 1 搜索 Train 2 动态规划 Train 3 组合数学 Train 4 点分治 Train 5 最大流 Train 6 群论/置换群 Train 7 动态规划1 Train 8 动态规划2 Train 9 动态规划3 Train 10 动态规划4 Train 11 最大独立集与二分图匹配 A. 最大独立子集,用最大团模板即可,注意若不存在的特殊情况 B. 跪了,赤裸裸的最大团模板题 C. 最大独立集,去除掉墙壁的点,才是实际的图。注意模板的ans=-1,若为-1则手动设定为0.即不存... 阅读全文
摘要:
A 错排公式 d[n] = (n-1)*(d[n-1]+d[n-2]);View Code #include<stdio.h>typedef long long LL;LL d[110];const int mod = 1e9+7;void init(){ d[1] = 0; d[2] = 1; for(int i = 3; i <= 100; i++){ d[i] = 1LL*(i-1)*(d[i-1]+d[i-2])%mod; } }int main(){ init(); int T; scanf("%d",&T); ... 阅读全文
摘要:
---恢复内容开始---Bron-Kerbosch算法计算图的最大全连通分量(团clique)最大独立集: 顶点集V中取 K个顶点,其两两间无连接。最大团: 顶点集V中取 K个顶点,其两两间有边连接。最大团中顶点数量 = 补图的最大独立集中顶点数量补图定义: G=<V,E> thecomplementofG,\bar{G}=<V,V\timesV-E> 详见连接:http://zh.wikipedia.org/wiki/%E8%A3%9C%E5%9C%96 更详细的:http://en.wikipedia.org/wiki/Bron%E2%80%93Kerbos... 阅读全文