摘要: 1、基本函数 1.1 Point 定义 const double eps = 1e-8; const double PI = acos(-1.0); int sgn(double x) { if(fabs(x) operator &(const Line &b)const { Point res = s; if(sgn((s-e)^... 阅读全文
posted @ 2017-07-26 00:54 GGBeng 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:最近公共祖先 LCA 倍增法 博客:浅谈倍增法求LCA 二、沙场练兵 题目:POJ 1330 Nearest Common Ancestors 代码: 阅读全文
posted @ 2017-07-26 00:51 GGBeng 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:浅谈LCA的在线算法ST表 二、沙场练兵 题目:POJ 1330 Nearest Common Ancestors 题解博客:http://www.cnblogs.com/Missa/archive/2012/10/01/2709889.html 代码: 阅读全文
posted @ 2017-07-26 00:47 GGBeng 阅读(1070) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:莫队算法小介绍——看似暴力的莫队算法 博客:莫队算法 博客:莫队算法 博客:曼哈顿距离最小生成树与莫队算法 博客:莫队算法详解 二、相关定义 【问题引入】 给定一个大小为N的数组arr,数组中所有元素的大小arr[i]<=N。你需要回答M个查询,每个查询的形式是L,R。你需要回答 阅读全文
posted @ 2017-07-26 00:42 GGBeng 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:一般图最大匹配问题-带花树开花算法 博客:任意图匹配 带花树模版 博客:一般图最大匹配-带花树算法 博客:带花树(一般图最大匹配)详解 ZOJ 3316 博客:无向图匹配的带花树算法 二、代码模板 阅读全文
posted @ 2017-07-26 00:34 GGBeng 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:曼哈顿距离最小生成树与莫队算法 博客:学习总结:最小曼哈顿距离生成树 二、知识梳理 曼哈顿距离:给定二维平面上的N个点,在两点之间连边的代价。(即distance(P1,P2) = |x1-x2|+|y1-y2|) 曼哈顿距离最小生成树问题求什么?求使所有点连通的最小代价。 最小 阅读全文
posted @ 2017-07-26 00:21 GGBeng 阅读(5685) 评论(1) 推荐(3) 编辑
摘要: tarjan算法的步骤是(当dfs到节点u时):1 在并查集中建立仅有u的集合,设置该集合的祖先为u1 对u的每个孩子v: 1.1 tarjan之 1.2 合并v到父节点u的集合,确保集合的祖先是u2 设置u为已遍历3 处理关于u的查询,若查询(u,v)中的v已遍历过,则LCA(u,v)=v所在的集 阅读全文
posted @ 2017-07-25 23:32 GGBeng 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:【研究总结】2-sat问题 二、沙场练兵 HDU1814 POJ3648 阅读全文
posted @ 2017-07-25 20:13 GGBeng 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 一、问题描述 最小费用最大流: 在最大流有多组解时,给每条边在附上一个单位费用的量,问在满足最大流时的最小费用是多少? 二、算法描述 思想: 给出一个容量网络,那他的最大流一定是一个定值(即使是有多个一样的最大值)。所以我们从开始的可行流开始增广时,最终的增广量是一定的。所以为了满足最小费用我们只需 阅读全文
posted @ 2017-07-25 19:59 GGBeng 阅读(812) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:趣写算法系列——匈牙利算法 博客:二分图最大匹配 博客:二分图的最大匹配——匈牙利算法 二、题目讲解 博客:POJ1274:The Perfect Stall(二分图最大匹配 匈牙利算法) 阅读全文
posted @ 2017-07-25 18:25 GGBeng 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 一、前人种树 博客:Kosaraju算法解析: 求解图的强连通分量 阅读全文
posted @ 2017-07-25 18:21 GGBeng 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 一、相关定义 最短路径:求源点到某特定点的最短距离 特点:Bellman-Ford算法主要是针对有负权值的图,来判断该图中是否有负权回路或者存在最短路径的点 局限性:算法效率不高,不如SPFA算法 时间复杂度:O(mn) 【具体与dijkstra算法的比较】 Bellman-Ford算法为何需要循环 阅读全文
posted @ 2017-07-25 11:05 GGBeng 阅读(6161) 评论(0) 推荐(1) 编辑
摘要: 一、相关定义 最短路径:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径。 地位:Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构、图论、运筹学等等。 缺陷:若有一个带负权回路的图(即一个不存在最短路径的图),Dijkstra 阅读全文
posted @ 2017-07-25 10:19 GGBeng 阅读(3511) 评论(0) 推荐(0) 编辑
摘要: 一、原文地址 博客:一步一步理解线段树 二、代码剖析 上述代码,if(istart == iend) 就是递归出口,此时若是正在构建左子树,那么会结束左子树的构造,接着执行递归构造右子树,直到碰到递归出口。 阅读全文
posted @ 2017-07-25 09:20 GGBeng 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 【图的遍历】 图的遍历是一个过程,什么样的过程呢? 现在给你一个图和其中任意一个结点v,从v出发系统地访问图G的所有的结点,且使每个结点仅被访问一次的过程。 【地位】 实现图的其他操作的基础。 【与树的遍历的关系】 相似点:图也有两种遍历的方法,分别是DFS(深度优先搜索)和BFS(宽度优先搜索); 阅读全文
posted @ 2017-07-24 19:09 GGBeng 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 一、知识储备 强连通: 在一个有向图G里,设两个点 a 、b,发现由a有一条路可以走到b,由b又有一条路可以走到a,我们就叫这两个顶点(a,b)强连通。 强连通图: 如果 在一个有向图G中,每两个点都强连通,我们就叫这个图,强连通图。 强连通分量:在一个有向图G中,有一个子图,这个子图每2个点都满足 阅读全文
posted @ 2017-07-24 11:07 GGBeng 阅读(490) 评论(0) 推荐(0) 编辑
摘要: 【Kruskal算法思想】 1.将图各边按照权值进行排序。 2.将图遍历一次,找出权值最小的边,(条件:此次找出的边不能和已加入最小生成树集合的边构成环),若符合条件,则加入最小生成树的集合中。不符合条件则继续遍历图,寻找下一个最小权值的边。 3.递归重复步骤1,直到找出n-1条边为止(设图有n个结 阅读全文
posted @ 2017-07-24 09:12 GGBeng 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 一、概述 MST(Minimum Spanning Tree,最小生成树)问题有两种通用的解法,Prim算法就是其中之一,它是从点的方面考虑构建一颗MST。 二、算法描述 大致思想:有一带权连通图G = (U,E),即图G顶点集合为U 、边集为E。①首先在集合U中任意选择一点作为起始点a,将该点加入 阅读全文
posted @ 2017-07-23 21:48 GGBeng 阅读(991) 评论(0) 推荐(0) 编辑
摘要: 一、递归的定义 定义: 当函数直接或者间接调用自己时,则发生了递归。 二、理解递归 先举个递归在阶乘中的例子:阶乘的定义: “一个正整数的阶乘是所有小于或等于该数的正整数的积,并且0的阶乘为1。” 以下是C++的实现: 分析:我们很容易判断当n = 某个较小数值时这个阶乘的递归计算是否是正确。比如当 阅读全文
posted @ 2017-07-22 22:44 GGBeng 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 一、相关介绍 大数运算 因数和结果可达几十万位 处理方法:用数组存储和表示大数 C++好处:重载运算符,使大整数类可以像int一样使用 备注:C++中的内置类型的精度最多只有20几位。 结构体BigInteger可用于储存高精度非负整数: 阅读全文
posted @ 2017-07-21 21:57 GGBeng 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 一、头文件<algorithm> ①sort函数 sort使用数组元素默认的大小比较运算符进行排序,只有在需要按照特殊依据进行排序时才需要传入额外的比较函数; sort可以给任意对象排序(不一定是内置类型,由此可见sort是模板函数),前提是类型需要定义“小于”运算符,或者在排序时传入一个“小于”函 阅读全文
posted @ 2017-07-21 21:39 GGBeng 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 一、sstream头文件运用 题目:输入数据的每行包括若干个(至少一个)以空格隔开的整数,输出每行中所有整数之和。 二、再谈结构体struct 新的定义方式: 特点:在struct内可以有成员函数。 与C++结合:可以重载运算符,为结构体定义“加法”,为结构体定义流输出方式。 应用举例: 三、模板 阅读全文
posted @ 2017-07-21 19:54 GGBeng 阅读(266) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <cstdio>#include <algorithm>#include <string> #include <cstring>#include <sstream>#include <vector>#include <set>#include 阅读全文
posted @ 2017-07-21 18:47 GGBeng 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 一般的入门顺序: 0. C语言的基本语法(或者直接开C++也行,当一个java选手可能会更受欢迎,并且以后工作好找,但是难度有点大),【参考书籍:刘汝佳的《算法竞赛入门经典》,C++入门可以考虑《c++ primer plus》,java选手可以考虑《think in java》or中文版《java 阅读全文
posted @ 2017-07-21 18:13 GGBeng 阅读(4617) 评论(1) 推荐(0) 编辑
摘要: 一、相关定义 【主要特征】 主要用于求解给定区间的第k大的元素; 时间复杂度为O(logn); 快排也可以快速找出,但快排会改变原序列,每求一次都得恢复序列。 【划分树】 预处理: ①int a[maxn]; //存储题目给定的原序列 ②int sorted[maxn]; //将原序列按由小至大的顺 阅读全文
posted @ 2017-07-21 08:09 GGBeng 阅读(361) 评论(0) 推荐(0) 编辑