
UVALIVE
vufw_795
Mood decides everything.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
UVALIVE 2678
题目链接:UVALIVE 2678解题思路: 这题一共有两种做法,一种是二分法,时间复杂度为O( n*log(n) );一种是直接遍历,时间复杂度为O( n )。 二分: 维护一个sum数组,保存数列前 i 项和,之后对每一个大于m的sum[i],使用二分查找找到sum[i]-m的lowerbound。 遍历: 同样维护sum数组,并且维护两个指针,表示满足条件的区间,之后在遍历数组的过程原创 2016-03-03 10:13:53 · 669 阅读 · 0 评论 -
匹配及其相关问题(三)
前言: 第二篇博客介绍了匈牙利算法解二分图最大匹配,这次我们需要应用这个算法来解决最小点覆盖与最大点独立问题。基本定理: 根据博客(一),我们有以下定理: 定理3:二分图中,无孤立点,点覆盖数=边独立数(匹配数) 定理8:无向图中,无孤立点,最小点覆盖集与最大点独立集互补 我们这次需要使用这两个定理来解决最小点覆盖与最大点独立问题。算法思路: 根据定理3,我们有点覆盖数等于匹配数,那么原创 2016-04-05 22:24:08 · 638 阅读 · 0 评论 -
匹配极其相关问题(四)
前言: 之前已经介绍了最小点覆盖与最大点独立,那么接下来就应该是最小边覆盖问题了。最小边覆盖问题有很多变种,其中最常见的就是DAG上的最小路径覆盖,这种问题可以转化成二分图最大匹配解决。基本定理: 根据博客(一),有定理如下: 定理4:二分图中,无孤立点,点独立数=边覆盖数=N-边独立数 若存在M个孤立点,上述定理3、4在顶点数N扣除M后成立。 定理7:无向图中,无孤立点, 1)若原创 2016-04-06 23:21:56 · 591 阅读 · 0 评论 -
UVALIVE 3516(DP)
题目链接:UVALIVE 3516解题思路: 大白书上题目,思路当然是枚举所有情况,实现即记忆化搜索或者动态规划。具体的做法就是枚举根结点最左边的结点,右边的所有结点情况随意,递归调用即可。dp[i][j]表示以S[i]根结点的多叉树的情况代码:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>原创 2016-03-25 23:24:45 · 697 阅读 · 0 评论 -
UVALIVE 3523(双连通分量+二分图染色)
题目链接:UVALIVE 3523解题思路: 这题是一道神题,考察的内容非常综合! 这题最终转化为求解图中结点是在一个奇圈上。首先我们可以把所有的圈找出来,即找到所有的双连通分量,跑一边tarjan算法即可。之后重头戏来了,我们获得一个双连通块之后,怎么判断块中的点是不是在一个奇圈上?答案——二分图染色! 定理:一个图为二分图的充分必要条件是图中不存在奇圈。 因此,如果一个双连通块为二分图,原创 2016-04-08 10:21:21 · 1096 阅读 · 2 评论 -
UVALIVE 4452(2-SAT变形)
题目链接:UVALIVE 4452解题思路: 题意大概这样,n个人对m个方案进行投票,每个人最多对m个方案中的4个投票,要么支持,要么反对,问是否存在一个最终决定,能够让每个投票人都有一半以上的建议被采纳。这题的题意有一个比较不清晰的地方,就是什么叫超过一半,其实就是投1个或2个方案的时候,全部建议都被采纳;投3个或4个方案时,最多一个建议没有被采纳。输出要求先判断是否存在满足要求的最终决定,在能原创 2016-05-04 20:10:00 · 859 阅读 · 0 评论 -
Tarjan三大算法之双连通分量(双连通分量)
定义: 对于一个连通图,如果任意两点至少存在两条点不重复路径,则称这个图为点双连通的(简称双连通);如果任意两点至少存在两条边不重复路径,则称该图为边双连通的。点双连通图的定义等价于任意两条边都同在一个简单环中,而边双连通图的定义等价于任意一条边至少在一个简单环中。对一个无向图,点双连通的极大子图称为点双连通分量(简称双连通分量),边双连通的极大子图称为边双连通分量。这篇博客就是总结一下求解无向图原创 2016-05-03 16:18:43 · 22115 阅读 · 10 评论