自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(438)
  • 资源 (2)
  • 收藏
  • 关注

原创 【Gray格雷码】

Gray码(转自M67大牛)Gray码     假如我有4个潜在的GF,我需要决定最终到底和谁在一起。一个简单的办法就是,依次和每个MM交往一段时间,最后选择给我带来的“满意度”最大的MM。但看了dd牛的理论后,事情开始变得复杂了:我可以选择和多个MM在一起。这样,需要考核的状态变成了2^4=16种(当然包括0000这一状态,因为我有可能是玻璃)。现在的问题就是,我应该用什么顺序来遍历这1

2012-04-05 21:42:29 1817

原创 【定径圆覆盖最多点模板】

#define eps 1e-9#define pi acos(-1.0)#define N 222struct point{ double x,y;}p[N];struct alpha{ double v; bool flag; bool friend operator <(const alpha &a,const alpha &b){//排序专用偏序关

2012-03-24 01:27:17 1359

原创 【左偏树】HDU 1512/ZOJ 2334

推荐黄源河的论文http://wenku.baidu.com/view/515f76e90975f46527d3e1d5.html #define N 100010struct node{ int dis,v; int l,r;}k[N];int n,m,pre[N];void init(){ int i; for(i=0;i<=n;

2012-02-17 15:59:04 1193

原创 【归并树—求第K小数】POJ 2104/HDU 2665

归并树 O(logn*logn*logn) for each query,很慢的说,划分树版http://blog.csdn.net/leolin_/article/details/6696801/*//1,建立归并树后我们得到了序列key[]的非降序排列,由于此时key[]内元素的rank是非递减的,因此key[]中属于指定区间[s,t]内的元素的rank也是非递减的,所以我们可以用

2012-02-15 11:40:56 723

原创 【二分匹配匈牙利算法模板】

注意内外循环!!!#define N 204int match[N];bool vis[N];int g[N][N];int n,m;bool sear(int s){ int i,j; for(i=1;i<=m;i++){//内循环是y集合(可以根据下一行的邻接矩阵改变一下) if(g[s][i] && !vis[i]){ v

2012-02-12 02:42:53 533

原创 【最大团模板】

ZOJ 1492 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=492/*最大团 = 补图G的最大独立集数———>最大独立集数 = 补图G'最大团*///最大团模板#define N 102int mx;//最大团数(要初始化为0)int x[N],tuan[N];int can[N][N];//can

2012-02-12 01:50:19 1614

原创 【无向图求最小割集】

一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集。可以用最小切割最大流定理:1.min=MAXINT,确定一个源点2.枚举汇点3.计算最大流,并确定当前源汇的最小割集,若比min小更新min4.转到2直到枚举完毕5.min即为所求输出min    不难看出复杂度很高:枚举汇点要O(n),最

2012-02-10 21:45:13 7140

原创 【tarjan求解双连通分量】

无向图的连通分支(连通子图): 判断一个无向图是否连通,如果进行dfs或者bfs之后,还有未访问到的顶点,说明不是连通图,否则连通。求解无向图的所有连通分支: 只需要重复调用dfs或者bfs 就可以解决:遍历顶点,如果v 未访问,则对其进行dfs, 然后标记访问。关节点(割点): 是图中一个顶点v, 如果删除它以及它关联的边后,得到的新图至少包含两个连通分支。双连通图: 没有关

2012-02-09 03:21:41 2417

原创 【LCA模板题】POJ 1330

RMQ版#define N 10010struct edge{ int v; int next;}e[2*N];int ecnt;int head[N];bool vis[N];int n;//点数int R[N];//第一次出现i点下标int p[N*2];//记录路径点编号//int dis[N];//与根的距离int dep[2*N];//深度int

2012-02-08 04:31:03 979 1

原创 【背包模板】

int V;//容量 //01void zeroone(int cost,int val){//费用,价值 int i; for(i=V;i>=cost;i--){ if(dp[i]<dp[i-cost]+val){ dp[i] = dp[i-cost]+val; } } } //

2012-02-05 20:21:34 650

转载 【转】刘汝佳黑书POJ题目

一.动态规划参考资料:刘汝佳《算法艺术与信息学竞赛》《算法导论》推荐题目:http://acm.pku.edu.cn/JudgeOnline/problem?id=1141 简单http://acm.pku.edu.cn/JudgeOnline/problem?id=2288 中等,经典TSP问题http://acm.pku.edu.cn/Judge

2012-02-03 22:07:20 1097

原创 【后缀数组模板】

hight数组是灵魂!倍增算法O(nlgn)#define maxn 100010int wa[maxn],wb[maxn],wv[maxn],wss[maxn];//论文模板的ws竟然跟g++里的关键字冲突!int r[maxn],sa[maxn];int cmp(int *r,int a,int b,int l){return r[a]==r[b] && r

2012-01-28 19:32:07 772

原创 【网络流各种模板】

EK 复杂度O(V*E*E)#define N 204 int c[N][N];//边容量 int f[N][N];//边实际流量 int pre[N];//记录增广路径 int res[N];//残余网络 queue qq; void init(){ while(!qq.empty())qq.pop(); memset(c,0,siz

2012-01-16 21:46:08 2357

转载 【转】POJ 图论、网络流题目

POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很多相关:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1144该题亦放在搜索推荐题中

2012-01-15 12:11:23 960

原创 【最小边覆盖 & 最小路径覆盖 & 最小顶点覆盖 & 最大独立集 & 最大团】

最小边覆盖 = 最大独立集 = |V| - 最大匹配数这个是在原图是二分图上进行的最小路径覆盖和最小边覆盖不同,不要求给的图是二分图,而是要求是N x N的有向图,不能有环,然后根据原图构造二分图,构造方法是将点一分为二,如,i分为i1和i2然后如果i和j有边,那么就在i1和j2之间连一条边。由此构成二分图然后最小路径覆盖 = n-m,n为原图的点的个数,m为新造二分图

2012-01-13 20:35:40 13163 4

原创 各种排序算法分析+实现

以前是直接用sort,对各种排序算法模模糊糊的,到了期末,无无聊聊地整理了各种常见的排序算法,顺便复习一下数据结构:)1、直接插入排序#define N 1005//插入排序(稳定的排序)//复杂度O(n^2)//基本思想:依次将数据表中的每一个数据元素//按关键字大小插入到以排序好的有序序列中//方法:a[0]暂存当前的元素,依次向后比较,当大于就向后移一个位,直到不能比较

2011-12-11 01:04:10 744

原创 【AC自动机详解+入门模板】HDU 2222

第一次写AC自动机,发现也不是太难理解,可能自己以前看过KMP&Trie而且理解的比较透彻吧,看自动机没有太大的困难,因为它也是利用了KMP的思想,理解了KMP,再看自动机就不难了:)转一下这个blog的描述先,感觉看起来比较好理解,可是他的代码就不敢恭维。。。http://www.cppblog.com/mythit/archive/2011/10/21/80633.html(有改动)补

2011-11-13 01:43:10 913

原创 【最长回文子串——Manacher算法】POJ 3974/HDU 3068

转载:O(n)回文子串算法    这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpress.com/2009/08/02/a-simple-linear-time-algorithm-for-finding-longest-palindrome-sub-string/    其实原文

2011-11-12 14:38:50 971

转载 【KMP O(n)算法详解】

转自matrix67.com如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。    我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I'm matrix67",字符串B="matrix",我们就说B是A的子串

2011-11-11 10:10:54 2314

原创 【组合数取模】

zoj 3557Lucas定理:只适用于p为素数#define N 10005// Lucas定理求解C(n,k)%p, p是素数// C(n,k)%p = C(n%p,k%p)*C(n/p,k/p)%p// C(n,k)%p = n!/(k!*(n-k)!)%p = n!*((k!*(n-k)!)^(p-2))%p// 对于一个质数p,i对p的逆元可以不用扩展欧几里得进行求解/

2011-10-31 02:04:02 1210

原创 【矩阵运算+模板】

矩阵运算是属于线性代数里的一个重要内容,上学期学完后只觉得矩阵能解线性方程,不过高中的时候听说过矩阵能优化常系数递推以及将坐标上的点作线性变换,于是找了些资料研究了一下,并把许多经典题以及HDU shǎ崽大牛总结的矩阵乘法的题目[1]、[2]和开设的矩阵乘法DIY Contest给做完了,感觉收获颇丰。    一个矩阵就是一个二维数组,为了方便声明多个矩阵,我们一般会将矩阵封装一个类或定义

2011-10-21 01:15:50 1667

原创 【有向图的最小树形图---朱刘算法】模板

最小树形图找到一个关于树的学习网址,赞~  http://acm.nudt.edu.cn/~twcourse/Tree.html无向图的最小生成树可以用prim算法或者Krusual算法求,而有向图的最小生成树也叫最小树形图,它是先固定一个根,再求出权值最小的树形图模板#define N 1005#define type int#define MAX INT_

2011-09-06 01:40:36 4154

原创 【转】 三分法——求解凸性函数的极值问题——czyuan原创

二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸性函数时,二分法就无法适用,这时三分法就可以“大显身手”~~如图,类似二分的定义Left和Right,mid = (Left + Right) / 2,midmid = (mid

2011-08-30 20:22:06 728

转载 【最大权二分匹配的KM算法】

转自百度百科。个人觉得关键是这句话:相等子图的完备匹配一定是二分图的最大权匹配。KM算法是根据它来搞的!KM算法是基于匈牙利算法的。具体参考cuitianyi的讲解。对于KM算法,除了求权和最大,还可以求权和最小以及求权积最大。对于求权和最小,只需要将每个权值取相反数,再求最大权和,结果再取相反数即可。对于求权积最大,则需要把每个权值转化为对数,从而进行求最大权和的

2011-08-26 22:58:43 544

原创 【最大子矩阵】hdu 2870

该题首先转化为只含有a,b,c的矩阵,然后对每一行dp求该列连续相同字母的最大高度,然后就可以每行每行地gao,又转化为求最大矩阵面积,就像hdu  1506一样,迭代地求左右>=当前高度的下标,hdu 1506代码看这里#include #include #includ

2011-08-26 02:32:41 526

原创 【DP求最大子矩阵面积】hdu 1506

求最大子矩阵面积其实就是求每个数左边>=a[i]的下标,右边>=a[i]的下标,然后就会求出面积了!#include #include #include #include #include #include #include #include #include

2011-08-26 01:55:50 940

转载 【背包】

首先说下动态规划,动态规划这东西就和递归一样,只能找局部关系,若想全部列出来,是很难的,比如汉诺塔。你可以说先把除最后一层的其他所有层都移动到2,再把最后一层移动到3,最后再把其余的从2移动到3,这是一个直观的关系,但是想列举出来是很难的,也许当层数n=3时还可以模拟下,再大一些就不可能了,所以,诸如递归,动态规划之类的,不能细想,只能找局部关系。1.汉诺塔图片(引至杭

2011-08-23 21:36:30 557

转载 数据结构之【trie树】

1、 概述Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。Trie一词来自retrieve,发音为/tri:/ “tree”,也有人读为/traɪ/ “try”。Trie树可以

2011-08-23 16:30:05 569

原创 【并查集+压缩路径】

并查集:(union-findsets)一种简单的用途广泛的集合. 并查集是若干个不相交集合,能够实现较快的合并和判断元素所在集合的操作,应用很多,如其求无向图的连通分量个数等。最完美的应用当属:实现Kruskar算法求最小生成树。 并查集的精髓(即它的三种操作,结合实现代码模板进行理解):1、Make_Set(x) 把每一个元素初始化为一个集合初始化后每一个元素的父亲节点是它

2011-08-21 10:18:35 1132

原创 【图染色】ZOJ 2066

很简单,先根据每个人选择情况建一个无向图,然后标记染色,有相邻边的不能染成同种颜色!原来标准时先对度排序,再染色。。。没有排序都可以过,这种算法叫Welch Powell算法,自己加上度的排序吧~用Welch Powell 算法进行图着色的步骤如下:(1)将图G的结点按照度数的递减次序进行排列.(这种排列可能并不是唯一的,因为有些点有相同的度数).(2)用第一种颜色对第一点

2011-08-20 22:38:18 874 1

原创 【快速排序】

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递

2011-08-19 11:17:04 1113

原创 【划分树】

划分树和归并树都是用线段树作为辅助的,原理是基于快排 和归并排序 的。划分树的建树过程基本就是模拟快排过程,取一个已经排过序的区间中值,然后把小于中值的点放左边,大于的放右边。并且记录d层第i个数之前(包括i)小于中值的放在左边的数。具体看下面代码注释。查找其实是关键,因为再因查找[l,r]需要到某一点的左右孩子时需要把[l,r]更新。具体分如下几种情况讨论:假

2011-08-18 02:08:04 1116

原创 【归并排序+实现】

归并排序——O(n*logn)归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Div

2011-08-16 21:20:00 1021

原创 STL【Heap】

STL里面的堆操作一般用到的只有4个。他们就是make_heap();、pop_heap();、push_heap();、sort_heap();他们的头函数是include首先是make_heap();他的函数原型是:void make_heap(first_pointer,end_pointer,compare_function);一个参数是数组或向量的头指针,

2011-08-13 22:32:12 469

原创 【2-SAT】

具体推荐先看这个《由对称性解2-SAT问题》算法合集之《由对称性解2-SAT问题》 再看赵爽的2-SAT解法浅析 看完了就基本明白2-SAT是怎么一回事,说白了就是约束!而做这种题的关键是建图!其他的就套模板,什么强连通缩点,拓扑染色。。。下面就具体以poj两道题为例说说,poj3683是输出具体方案,poj2723是输出方案数算法流程:1.构图2.求图的极大强连通子图

2011-08-11 20:39:00 833

原创 【约瑟夫模板】

具体可以以选猴王为例 http://poj.grids.cn/practice/2746这里mark一下这个模板。#include using namespace std;int last[400][400];void count_monkey(int n, in

2011-08-10 03:49:06 609

原创 单调队列+STL deque

单调队列=双端队列!我们从最简单的问题开始:给定一个长度为N的整数数列a(i),i=0,1,...,N-1和窗长度k.要求:      f(i) = max{a(i-k+1),a(i-k+2),..., a(i)},i = 0,1,...,N-1问题的另一种描

2011-08-06 15:14:56 3080 1

原创 【博弈论】

寻找平衡状态(也称必败态,奇异局势),(满足:任意非平衡态经过一次操作可以变为平衡态)(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取p个,最多取q个.最后取光者得胜.n = (m+1)r+s , (r为任意自然数,s

2011-08-05 20:46:42 714

原创 STL【priority_queue】

priority_queue 在头文件中,还定义了另一个非常有用的模板类priority_queue(优先队列)。优先队列与队列的差别在于优先队列不是按照入队的顺序出队,而是按照队列中元素的优先权顺序出队(默认为大者优先,也可以通过指定算子来指定自己的优先顺序)。prio

2011-08-03 04:19:15 754

转载 【二叉堆、堆排序】

推荐:http://www.cppblog.com/guogangj/archive/2009/10/29/99729.htmlhttp://www.wutianqi.com/?p=1820堆排序实现:#include using namespace std

2011-08-03 01:55:26 1033

acm程序设计曾宗根

acm程序设计曾宗根,方便

2011-09-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除