- 博客(82)
- 收藏
- 关注
转载 划分树
原文传说中的划分树,只闻其名未见其身。然后搜索了一下划分树的资料,擦擦擦,这不就是同快排的原理+线段树的操作,两者一融合进化成了划分树么。前面两个都会,学习起来倍感轻松。建树过程: 先对区间[1,n]内所有元素进行排序,未排序之前的数列赋值给线段树的第一层元素(tree[0][i]),然后就是同快排的原理以排序后中间元素为参 照,小于它的放在树下一层的左边,大于它的放在树...
2015-08-24 23:18:00
184
转载 POJ 模拟题集合
http://www.cppblog.com/Uriel/articles/101592.html感觉这个暑假没有去年有激情啊,,,还没到状态就已经块上学了,,,真是弱暴了,,,找几道模拟题刷刷。。。标加号表示已AC。。。+ 1008 历法,不难+ 1102 不难。+ 1028 纯模拟。被题目坑了一下。。1023 貌似...
2015-08-13 21:29:00
247
转载 混合图的欧拉回路判定
对于有向图和无向图的欧拉回路判定,很容易做到.那对于混合图呢?? 混合图就是图中既存在无向边又存在有向边的图. 至于解法: 转载自这里 把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路。 好了,现在每个点入度和出度...
2015-05-11 23:13:00
203
转载 差分约束系统
训练地址先总结下: 第一:感觉难点在于建图第二:①:对于差分不等式,a - b <= c ,建一条 b 到 a 的权值为 c 的边,求的是最短路,得到的是最大值②:对于不等式 a - b >= c ,建一条 b 到 a 的权值为 c 的边,求的是最长路,得到的是最小值③:存在负环的话是无解④:求不出最短路(dist[ ]没有得...
2015-05-07 19:24:00
116
转载 vim 配置
"" Author: Tianql" System: Ubuntu15.x" Date: 2015/4/24"set fileencoding=utf-8set encoding=utf-8"filetype on"filetype plugin on"filetype indent onfiletype plugin indent o...
2015-04-24 22:21:00
96
转载 最大权森林
http://poj.org/problem?id=3723分析:因为,图可能不连通,求所有最大生成树的总和最大,即最大权森林。prime算法会超内存。 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define _Cl...
2015-04-20 23:53:00
212
转载 求无向图的简单最大环
以poj3895为例: 思想很简单,就是有dfs遍历图并且用一个数组记录所走的长度。当来到一个点是已经访问过的,则肯定形成一个环,更新环的长度,直到所有点访问完为止。代码: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #define ...
2015-04-20 16:29:00
1812
转载 KM算法专题
原文:http://972169909-qq-com.iteye.com/blog/1184514 题目地址:这里。 1)求图中所有环的总长度(环的长度不唯一)的最小值。当无法得到完备匹配时说明环不存在。 第三题:http://acm.hdu.edu.cn/showproblem.php?pid=1853 直接建图,注意有重边哦! if (-c...
2015-04-18 22:44:00
233
转载 关于生成树
基本概念: 树:如果一个无向连通图G中不存在回路,则称图G是一颗树。 生成树:无向连通图G的一个子图如果是一颗包含了G中所有顶点的树,则称它为图G的生成树。注意:生成树是图G的极小连通子图,表示在若在图中任添加一条边都将形成一个回路,同样的,若任意去掉一条边都将使图不在连通。 如果在边中加上权值,那么权值最小的生成树即为最小生成树,权值最大的生成树为最大生...
2015-04-16 23:40:00
378
转载 堆的概念及实现
1.概述: 堆的概念:堆是一种完全二叉树,其高度为log(n),可以用一维数组来实现。堆中存储的数据是局部有序的。可分为两种堆:最大顶堆和最小顶堆。 最大顶堆:任意一个结点的值都大于等于其任意一个子结点的值。 最小顶堆:任意一个结点的值都小于等于其任意一个子结点的值。可以发现,堆的罗辑结构是树状结构,而存储结构是线性结构,因此,堆常用来实现优先队列。还可又来堆...
2015-04-09 15:24:00
254
转载 Floyd最小环
本文转自这里 最小环:从一个点出发,经过一条简单路径回到起点成为环.图的最小环就是所有环中长度最小的. 怎样求最小环呢? 1传统的解决方法(dijkstra): 任意一个最小环环的权值,我们都可以看成两个有边相连的结点i、j的直接距离加上i、j间不包含边(边i->j)的最短路径。求最短路径我们第一个想到的就Dijkstr...
2015-04-01 14:01:00
117
转载 有向环覆盖问题
转载自这里 给你一个N个顶点M条边的带权有向图,要你把该图分成一个或多个不相交的有向环。且所有定点都被有向环覆盖。问你该有向环所有权值的总和最小是多少? 答案就是:有向环最大权值覆盖=最优匹配。 如果,改为无向图,问你无向环最大权值覆盖?答案也是一样的。只是在建图的时候把有向改为无向即可。分析: 我们把任意一个顶点i都分成两个,即i和i’. ...
2015-03-30 22:54:00
398
转载 KM算法
原文转载自大牛,略有改动 KM算法是用来求完备匹配下的最大权匹配:在一个二分图内,左顶点为X,右顶点为Y,现对于每组左右连接<Xi,Yj>有权Wij,求一种匹配使得所有Wij的和最大-------即最佳匹配。 记 L(x) 表示结点 x 的标记量,如果对于二部图中的任何边<x,y>,都有 L(x)+ L(y)>= Wx,...
2015-03-29 18:58:00
267
转载 归并排序
本文转载自白话经典算法 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。...
2015-03-29 14:34:00
112
转载 树状数组
原文:http://www.cnblogs.com/ws5167/p/3903970.html 树状数组主要用于快速的更改某个点的值和查询某个区间的和,是一种比较小巧的数据结构.先看下图: 假设数组A[]是我们要操作的对象,则数组C[]则是数组A[]相对应的树状数组.观察上图,我们得到数组C[]前八个值: C[1]=A[1] C[2]=A...
2015-03-28 23:33:00
94
转载 构造强连通图
我们知道,要把一个非边双连通图构造成一个边双连通图,只需把这个图化简(边双连通分量缩点)成一个树,然后 找出叶子节点个数leaf,(leaf+1)/2就是要新添加的边数。 现在,对与有向图来说,我们需要求加最少的边,使得一个非强连通图变成一个强连通图,最少的边数是多少? 同样的,我们需要把他化简(强连通分量缩点)成一个DAG图(有向无环图),然后找出入度为0...
2015-03-28 16:17:00
424
转载 图的单向连通
poj 2762 题意:任给一个图,问你对于任意的两个点x,y之间是否存在从x到y或从y到x的路径? 分析:这显然是要求图是否为单向连通图?我们可以对强连通分量进行缩点,缩点后的图一定是一个有向无环图; 现在,问题等价于给你一个有向无环图,问你它是否为单向连通图。这样,我们就可以对有向无环图进行拓扑排序,当且仅当得到的拓扑序列中任意相邻两点间边连通,即topo[i]--...
2015-03-28 13:05:00
884
转载 poj 2186
首先,强连通分量可以缩点,所有缩点后的图一定是一个有向无环图,出度为0的点受其他出度不为0的点的仰慕.因为要求的是受其他所有点仰慕的点的个数(强连通内互相仰慕),所以,当只有一个出度为0的点时,输出它所在的强连通分量的顶点个数就是答案. 1 #include<cstdio> 2 #include<cstring> 3 #...
2015-03-27 23:44:00
135
转载 无向图边双连通分量+构造双连通图
边双连通分量:边连通度大于1的连通分量 在树中至少添加多少边能使得图变为边双连通图 ?添加的边=(叶子节点+1)/2. 在一个无向图中,我们可以把它的边双连通分量缩成一个点,然后一定会得到一颗树,然后按上述方法求叶节点即可。 1 #include<cstdio> 2 #include<cstring> ...
2015-03-26 23:57:00
370
转载 无向图的割边
割边:若在连通图中删除某条边,图不再连通,则删除的边为割边。 根据low[i],和dfn[i]的n定义,我们知道,若(u,v)是生成树的一条边,且low[v] > dfn[u],则(u,v)为割边------桥。 zoj 2588 题意:给n个顶点,m条边, 可能有重边。问你图中有几个桥?并按顺序输出桥的编号。#include<...
2015-03-26 15:31:00
288
转载 无向图的顶点连通度
无向图的顶点连通度需要用到网络流来求,并且有以下定理;Mengerg定理: 无向图的顶点连通度K和顶点间的最大独立轨数目之间存在如下关系:① 当图为完全图时: k=V-1 (V表示图中顶点数)② 当图为非完全图h时: K=min{ P(A, B) | 任意不相邻的顶点AB }注意:如果AB相邻的话,那么删除图中所有其他的点后,AB任然连通,故强调不相邻。...
2015-03-25 18:31:00
2937
转载 memcmp()直接比较两个数组的大小
两个字符数组可以用strcmp()比较大小。两个整数数组也有个函数memcmp()可以比较大小,和strcmp()的返回值一样的。 头文件#include<cstring> / #include<string.h> 函数原型:int memcmp(const void *s1, const void *s2, size_t n); 字符...
2015-03-19 15:52:00
2125
转载 静态字典树
动态字典树每次都要new一个内存来操作,所以耗时也是较多的;所以我们可以先一次性开辟出足够的空间,然后模拟动态字典树的创建查找过程来写出相应的静态字典树。代码都差不多,主要是你得先学会了动态字典树;接下来的事情就是模拟了,,,模拟,,模拟。结构定义:struct Trie{ int next[26]; int cnt; ...
2015-03-13 14:41:00
166
转载 动态字典树
本文转自于:http://www.cnblogs.com/tanky_woo/archive/2010/09/24/1833717.html代码部分有改动。 字典树: 又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公...
2015-03-12 20:45:00
168
转载 poj 1149
1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #define _clr(x, y) memset(x, y, sizeof(x)) 5 #define Min(x, y) (x < y ? x : y) 6 #defi...
2015-03-03 17:16:00
93
转载 poj 2112 floyd+Dinic最大流+二分最小值
题目大意是: K台挤奶机器,C头牛,K不超过30,C不超过200,每台挤奶机器最多可以为M台牛工作,给出这些牛和机器之间,牛和牛之间,机器与机器之间的距离,在保证让最多的牛都有机器挤奶的情况下,给出其中距离最长的一头牛移动距离的最小值。 首先用Floyd求出任意两点之间的最短距离,然后再用二分法限定最多的移动距离d,在求最大流时,搜索增广路的时候同时也判断距离有没有超...
2015-02-23 01:31:00
134
转载 POJ 1698 (二分图的多重匹配)
转载:http://www.cppblog.com/MatoNo1/archive/2011/03/26/142766.aspx 我们知道在一个图中,每个点最多只能匹配一条边的情况,是二分图的最大匹配问题.然而还有种情况是:每个点可以匹配多条边,但有上限,假设为L.即Li表示最多点i可以和Li条边相关联.二分图多重最大匹配:1.建立一个源点S和汇点T.2.S指向x...
2015-02-22 01:24:00
144
转载 网络流OJ题集锦!!!
最大流POJ 1273 Drainage DitchesPOJ 1274 The Perfect Stall (二分图匹配)POJ 1698 Alice's ChancePOJ 1459 Power NetworkPOJ 2112 Optimal Milking (二分)POJ 2455 Secret Milking Machine (二分)POJ 3189 Ste...
2015-02-19 22:25:00
197
转载 网络流算法
标号法过程为:(1) 先将 flag、 prev 和 alpha 这 3 个数组各元素都初始化-1 。(2) 将源点初始化为已标号未检查顶点,即 flag[0] = 0, prev[0] = 0, alpha[0] = INF, INF 表示无穷大;并将源点入队列。(3) 当队列非空并且汇点没有标号,从队列头取出队列头顶点,设这个顶点为 v, v 肯定是已标号未检查顶点;因此...
2015-02-13 00:54:00
135
转载 平面分割问题
1.n条直线最多能将一个平面分割成多少个区域?用F(n)来表示。 n-1条直线能将平面分割成F(n-1)个平面。若要第n条直线分割出的平面数最多,则第n条直线应和n-1条直线都相交,且不能相交于一点。那么就会产生n-1个交点,第n条直线被n-1条直线分割成n-2条线段和2条射线。他们(线段、射线)各自将经过的区域一分为二。故增加了n-2+2个区域。 所以有公式:...
2015-01-11 20:22:00
249
转载 递推专题笔记
递推说白了就是找规律,然后写出他的递推方程,有的还可以写出通项公式,然后准确预测出第n项的值。因为这种规律存在着前因后果的关系,即是说,后一项的结果往往和前一项或前几项有着某种联系。这种联系不仅仅存在于数字之中,世间万物亦是如此。 由于,递推是深入理解动态规划的基础,就我目前的水平,看到动态规划就如看到tiger一般,完全不知所以,所以为了找回在动态规划前的自信,我打算在...
2015-01-11 18:38:00
161
转载 斐波那契数列笔记
在中学时,我们就知道斐波那契数列是个很神奇的数列,在自然,生物,数学中都能找到他的影子,现在本人总结一下我关于斐波那契数列知识的例题。 斐波那契数列公式: 因为(1-sqrt(5))/2的绝对值小于1所以当i较大的时候,往往可以忽略掉这一项,f(n)≈((1+Sqrt(5))/2)^n/sqrt(5);斐波那契数列性质: 1.斐波那契...
2015-01-10 23:47:00
389
转载 矩阵例题
根据公式可以直接推得:S(n) =S(n-1)+F(n) =S(n-1)+3*F(n-1)+2*F(n-2)+7*F(n-3) 由公式可知:S(n)的值由S(n-1)和F(n)的值推得,而F(n)=3*F(n-1)+2*F(n-2)+7*F(n-3);所以在构造矩阵的时候要体现出S(n)和F(n)递推的过程。构造矩阵如下:...
2015-01-09 23:47:00
219
转载 等比数列、矩阵二分求和
对于式子的值,我们若直接算出等比数列的和再模上M,那么中间结果可能会溢出。对于这个问题,我们可以用二分求和来做,这样一来,它的中间结果每次都在模M,任何时候都不会有溢出的危险。对上述式子进行如下化简:根据,以上化简的结果,我们可以得出递归的代码: 1 #include <cstdio> 2 #include <cstring>...
2015-01-06 18:52:00
172
转载 矩阵乘法的应用
我们都知道矩阵可以用来很方便的求多个方程组,但矩阵的作用不单单只用来求方程组。下面记录一下本人对矩阵应用的一点点了解,还有很多应用看不懂,以后看懂了会在此处慢慢更新。 1.化简递推类问题。 比如,我们现在要求第N项Fiboncci值模上一个p的结果是多少? 2.给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p...
2015-01-06 17:19:00
179
转载 Python初学
经同学推荐,学习了下Python语言,看Python的介绍,它本身是一个面向对象的解释型脚本语言,我初看到这句话的时候就在想,一个脚本语言还搞成面向对象?有这个必要么?原谅我肤浅了一把。 它还被俗称为胶水语言,就是能够把其他语言结合在一起。它自己介绍的特点:慢。简洁。 其实,在刚开始学的时候,因为和C语言语法的很大差别,搞的我很不习惯,非常的不爽。C的代码块都是用{...
2014-12-31 20:48:00
118
转载 整数王国的传说
本文系转载:http://www.ituring.com.cn/article/131613一、混乱之初一开始 K 是整数王国的国王。整个国家还算太平。后来出现了一个叫做 M 的家伙,比所有人有强壮,他把 K 给揍扁了,自己当了国王。于是整个国家出现了混乱,弱肉强食:100杀死了99,98又和10合力杀死了100,……混乱情况持续了一年,整数王国的臣民不断减...
2014-12-22 13:43:00
177
转载 x^2+y^2=N的整数解?
本文系转载:http://blog.sina.com.cn/s/blog_a661ecd50101cv41.html 我们先研究这个问题的一部分:哪些素数是两平方数之和?为什么我们先研究素数,有个很重要的原因是:若两个正整数都是两平方数之和,那么它们的乘积也是两平方数之和。道理很简单,设两个正整数分别为 a^2+b^2 和 c^2+d^2 ,那么有 当然我们...
2014-12-16 16:57:00
1560
转载 最大上升序列和
一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有...
2014-12-14 18:41:00
167
转载 最大连续子序列的和
给你一段包含负数的序列,问你这段序列的最大和是多少?并且打印出最大和区间?例如假设有两个序列如下: 5: 6 -1 5 4 -7 7: 0 6 -1 1 -6 7 -5 很容易看出第一个包含5个元素的序列的最大和是14.区间从1到4.第二个最大和是7,区间可以有两个,从1到6或则从6到6. 这是DP的一个经典问题,我们用sum来表示从tp到i的...
2014-12-14 17:28:00
97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人