
POJ
vufw_795
Mood decides everything.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
kosaraju算法应用(一)
题目链接:POJ 2186解题思路: kosaraju算法,本以为要缩点,但是题目只要求找到拓扑排序的一个唯一的头,可以水过——通过计算强连通分量的出度。代码:#include <cstdio>#include <vector>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n原创 2015-05-23 15:54:31 · 1048 阅读 · 0 评论 -
Tarjan三大算法之双连通分量(双连通分量)
定义: 对于一个连通图,如果任意两点至少存在两条点不重复路径,则称这个图为点双连通的(简称双连通);如果任意两点至少存在两条边不重复路径,则称该图为边双连通的。点双连通图的定义等价于任意两条边都同在一个简单环中,而边双连通图的定义等价于任意一条边至少在一个简单环中。对一个无向图,点双连通的极大子图称为点双连通分量(简称双连通分量),边双连通的极大子图称为边双连通分量。这篇博客就是总结一下求解无向图原创 2016-05-03 16:18:43 · 22093 阅读 · 10 评论 -
差分约束系统(入门)
简介: 如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则其为差分约束系统(system of difference constraints)。亦即,差分约束系统是关于一组变量的特殊不等式组。求解差分约束系统,可以转化成图论的单源最短路径问题。 观察xj-xi<=bk,会发现它类似最短路中的三角不等式d[v]<=d[u]+w原创 2016-03-04 12:08:06 · 894 阅读 · 0 评论 -
强连通分量的tarjan算法应用(一)
题目链接:POJ 2186解题思路: 先用tarjan算法求出图中的强连通分量,再求出缩点后唯一的叶结点即可。代码:#include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n,m,dfn[100005],low[100原创 2016-02-23 16:24:29 · 903 阅读 · 0 评论 -
POJ 2096(概率DP)
题目链接:POJ 2096解题思路: 总的来说状态方程还是蛮好想的,每次找bug的时候,有可能会出现四种情况,一是在已经找到bug的系统中找到了旧bug,二是在新的系统中找到旧bug,三是在已经找到bug的系统中找到了新bug,二是在新的系统中找到新bug。于是,状态dp[i][j]表示在 j 个系统中找到 i 个bug需要的天数期望,初始状态dp[0][0]=0,状态转移方程如下:dp[i][j原创 2016-02-24 16:48:31 · 628 阅读 · 0 评论 -
POJ 2195(二分图最大权匹配)
题目链接:POJ 2195解题思路: 这题可以转化成权匹配或者费用流问题。首先需要根据输入构图,将问题转成权匹配问题,之后套用KM算法即可。KM算法入门很好的一道题目。代码:#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define INF 0x3f3f原创 2016-02-21 21:13:31 · 1049 阅读 · 0 评论 -
POJ 1094(拓扑排序)
题目链接:POJ 1094解题思路: 基本的思路就是拓扑排序算法。需要注意的是环的判断优先于排序是否唯一的判断。代码:#include <queue>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int n,m,a[30][30],degree[30原创 2016-02-14 00:59:46 · 695 阅读 · 0 评论 -
数论之欧几里德算法(四)
简介:欧几里德算法的应用题目链接:poj 1061解题思路: A = m - n , B = y - x , N = L , 题目转化为求解模线性方程Ak ≡ B(mod N) 预处理:若m小于n,交换m与n,x与y代码:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using names原创 2015-07-19 20:23:51 · 630 阅读 · 0 评论 -
编辑距离算法——动态规划
概念解释: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数,如果它们的距离越大,说明它们越是不同,所以一般会用来表示两个字符串的相似度。允许的操作包括修改一个字符,插入一个字符,删除一个字符。应用范围非常广泛,例如抄袭检测,NLP。 要想知道从一个字符串转成另一个字符串的最少变换次数,我们就需要用一个算法,来求出两个字符串之间的最小编辑距离,...原创 2015-09-22 18:05:56 · 1213 阅读 · 0 评论 -
大楼扔鸡蛋问题(动态规划)
题目链接:poj 3783题意分析: 经典题,紫书上的一道例题,4+2出了这道原题,我愣是以为是数学题,最后也没做出来。题意是这样的,给你N个鸡蛋(硬度一样),让你测鸡蛋的硬度,测量的方法就是从某栋M层的楼的某一层X上把鸡蛋扔下来,如果鸡蛋碎了,代表他的强度小于X;如果没碎,则强度大于等于X。我们要做的就是不断的从楼上把鸡蛋扔下来,直到找到某一层楼X,从这一层楼扔下来鸡蛋不碎掉,从X+1层扔...原创 2015-07-14 19:49:10 · 7137 阅读 · 7 评论