自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

转载 常用 大数据量、海量数据处理 方法 / 算法总结

常用 大数据量、海量数据处理 方法 / 算法总结 大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法

2011-10-29 19:57:03 807

原创 POJ 2289 Jamie's Contact Groups (二分+匹配/网络流)

题意:把n个点,分到m个组中。题目给出每一个点可以被分到的那些组。要求分配完毕后,最大的那一个组的人数最小。题解:比较怪。一开始化作费用流做。假设每一次增广过后,路径上所有边的费用增大相等的值,这样一来,被增广过的路径下一次就不会被立即增广了。这样就能使与汇点相连的那些点均匀增加。结果悲剧TLE```。#include using namespace std;#define MAX

2011-10-27 23:47:26 1411

原创 POJ 2135 Farm Tour (最小费用最大流)

题意:FJ带他的朋友参观农场,他们的起点是1,终点是N, 点与点之间可能存在路径。现在要求从1到N,在从N回到1所走的最短路程。并且返回时已经被走过的路不能再走!题解:最小费用流。每条路只走一次,说明每一条边的容量为1。由于是无向图,所以从N走回1的过程其实就等同于再从1到N走一遍。那么就需要寻找两条从1到N的最短路径。取一个超级源点,将其与1连接,边的容量为2(两条路),费用为0。N与一超级

2011-10-25 21:41:56 701

原创 POJ 2112 Optimal Milking (二分+匈牙利)

题意:在一片草场上有K台挤奶机,每台挤奶机最多可以为M头奶牛挤奶。有C头奶牛。把奶牛和挤奶机看做个体,则所有个体之间有一定的距离。现在给出K,C,M以及所有个体之间的距离。在保证所有奶牛都可以挤奶的情况下,求路程最长的奶牛的最小路程。题解: 题目已经保证了所有奶牛都可以挤奶,那么最长的路径自然是 (顶点数-1) * 200。我们只需要二分最小路程,然后判断在此情况下是否所有的奶牛都存在合适的匹

2011-10-25 16:24:04 565

原创 POJ 1149 PIGS (最大流Dinic)

题意:话说一个猪圈管理员,他本身没有猪圈的钥匙。每天会有许多顾客来买猪,这些顾客自己带着某些猪圈的钥匙。每当一个顾客来买猪,这些打开的猪圈里的猪可以随意流动,买完猪之后打开的猪圈全部关闭。现在已知每个猪圈里猪的的数量,每一名顾客拥有的钥匙以及他想购买的猪的数量。求管理员可以卖出的最大数量。题解:构图是难点在于猪的流动。我是这样想的,假设顾客A可以打开了猪圈1,3,5,他需要购买numA头猪

2011-10-25 13:26:47 950

转载 二分图的一些知识

对于任意图:|最小边覆盖|+|最大匹配|=|V|二分图的最大匹配=最小点覆盖数对于二分图:以下数值等价.最大匹配最小点覆盖|V|-最大独立集(二分图or有向无环图)|V|-最小边覆盖数|V|-最小路径覆盖数(有向无环图)|V|-最小路径覆盖数/2(无向图)(上面括号里有有向无环图的,均是将一个点拆成两个点连边匹

2011-10-22 13:20:26 592

原创 POJ 3177 Redundant Paths (边双连通,缩点,判重)

题意:加上最少的边,使得改造后的图中去掉任意一条边后图依然连通。(图是非简单图,需要判重)题解:先找出边双连通分量,然后缩点,的到一棵树。需要加的最少边=(leaves+1)/2我们可以发现low[4]=3,low[7]=4 但是我们知道这条边并不是割边.所以low[u]!=low[v]是割边的必要不充分条件.#include using namespace std;#d

2011-10-22 10:33:28 967 1

原创 POJ 3352 Road Construction (边双连通,缩点)

题意:加上最少的边,使得改造后的图中去掉任意一条边后图依然连通。题解:先找出边双连通分量,然后缩点,的到一棵树。需要加的最少边=(leaves+1)/2PS:我们可以发现low[4]=3,low[7]=4 但是我们知道这条边并不是割边.所以 low[u]!=low[v]是割边的必要不充分条件. #include#include#includeusing na

2011-10-22 10:29:53 966

原创 POJ 2942 Knights of the Round Table (奇圈+点双联通)

题意:在亚瑟王的圆桌骑士团中,某些骑士两两之间相互憎恨,这样一来他们开会的时候边不能相邻的坐着。即肯定存在某些人不能参加会议。假如一个骑士所有的会议都不能出席,那么他就会被驱逐。现在已知那些骑士之间相互憎恨,求最少要驱逐多少名骑士。(开会时人数必需>=3且为奇数)题解:建图时,对互相不憎恨的两人之间连一条边。对任意一名骑士来说,他要能出席某次会议则他左右的人都不能与他互相憎恨。将每次参加会议的

2011-10-22 10:22:16 1984

原创 数字链表

#include #include using namespace std;#define N 100000struct NODE { int val; NODE* next; };NODE *pos[N]; /* pos[i] = x 表示余数i出现的节点的地址为x */bool done[N]; /* done[i] 表示余数i已经处理过 */int mai

2011-10-21 23:53:21 694

转载 Tarjan应用:求割点/桥/缩点/强连通分量/双连通分量/LCA(最近公共祖先

作者提示:在阅读本文之前,请确保您已经理解并掌握了基本的Tarjan算法,不会的请到http://hi.baidu.com/lydrainbowcat/blog/item/42a6862489c98820c89559f3.html阅读。基本概念:1.割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。2.割点集合:在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合

2011-10-18 22:29:47 1284

转载 强连通分量的三种算法

转自:http://kinslovertec.blogbus.com/logs/44636955.html常见的(我见过的)强连通分量的三种算法有:1. Kosaraju算法(双DFS)2.Tarjan算法 3.Gabow一.Kosaraju算法算

2011-10-18 19:23:50 1830

原创 POJ 2186 Popular Cows (强连通分量)

题意:—给定一个有向图,求有多少个顶点是由任何顶点出发都可达的。题解:1. 求出所有强连通分量  2. 每个强连通分量缩成一点,则形成一个有向无环图DAG。—3. DAG上面如果有唯一的出度为0的点,则该点能被所有的点可达。那么该点所代表的连通分量上的所有的原图中的点,都能被原图中的所有点可达,则该连通分量的点数,就是答案。—4. DAG上面如果有不止一个出度为0的点,则这些点互相不可达,原问

2011-10-18 16:02:27 554

原创 POJ 1236 Network of Schools (强连通分量,块,缩点)

题意:一些学校通过网络连接在一起,每个学校手中有一份名单,即它所指向的点。学校A的名单中有学校B,并不能保证学校B的名单里有学校A。现在有一软件,1.问至少发给几个学校才能保证所有的学校都可以得到该软件。2.至少加几条边才能使将软件发给某个学校后,其他所有学校都可以得到软件。题解:第一问求的是入度为0的点。第二问求的是加几条边使图变为强连通图。PS:有向无环图中所有入度不为0的点,一定

2011-10-18 15:29:56 602

原创 POJ 1523 SPF (割点)

题意:求割点,并计算去掉割点后连通分支的数量。#include using namespace std;#define N 1005#define min(a,b) (a<b?a:b)int size, id;int head[N], vis[N];int l

2011-10-17 20:58:53 719

转载 双连通分量

[点连通度与边连通度]     在一个无向连通图中,如果有一个顶点集合,删除这个顶点集合,以及这个集合中所有顶点相关联的边以后,原图变成多个连通块,就称这个点集为割点集合。一个图的点连通度的定义为,最小割点集合中的顶点数。       类似的,如果

2011-10-16 10:22:09 6637

原创 POJ 1201 Intervals (差分约束系统)

题意:给你许多小区间[ai,bi],并且指定每一个小区间内至少包含ci个数。然后求一个长度最小区间 z, 使得与每一个小区间的相同元素都>=ci。题解:1.假设区间z=[s,t], sum[i]表示[s,t] ∩ [s,i] 的元素个数。那么[ai,bi] >= ci 则可以表示为sum[bi]-sum[ai-1]>=ci。2.若i3.若i但是在本题中 0 //AC

2011-10-15 16:03:55 826

原创 POJ 2983 (差分约束系统Spfa)

题意:有一些关于点的信息,大概如下。P A B C 表示点A在点B的北方且与B相距C。 V A B 表示点A在B的北方,但是不清楚具体的距离(A-B>=1)。题解:A-B=C转换成A-B>=C和A-B#include using namespace std;#de

2011-10-14 14:44:58 649

原创 POJ 1364 King(差分约束系统)

题意:给出n个变量,m个约束公式 asi + asi+1 + .... + asi+ni ki ,叫你判断是否存在着解满足这m组约束公式。题解:对于 asi + asi+1 + ....... + asi + n ki,因为ai和ki都为整,设sum[n] 为 变量a

2011-10-14 01:00:09 661

原创 POJ 3195 Candies (差分约束)

题意:幼稚园分糖果,输入a,b,c表示,小孩a最多只能忍受小孩b的糖果比他多c个。求第一个小孩和最后一个小孩最多可以相差多少个糖果。题解:卡队列呀···。手写了一个循环队列果断超时。改成栈则AC。貌似还有许多优化的方法,比如用优先级队列或者堆。#include usi

2011-10-13 00:58:30 902

原创 POJ 1087 A Plug for UNIX (最大流,EK算法)

题意:读题很恶心···。大概就是说现在有n个不同的插孔,m台不同的用电器,k种适配器。(适配器就相当于一个中间插座,比如一个适配器是(x,y)。有一台用电器必须插x插孔,但是现在只有一个y插孔,那么就可以通过适配器来连接)。另外需要注意的就是给出的是适配器的种数,每一种的数量无限制。题解:建图的大概思路。s-->电器-->适配器-->插孔-->t#include #include

2011-10-11 18:07:10 625

原创 POJ 2516 Minimum Cost (最小费用最大流,KM解法)

题意:有N个客户,M个仓库,和K种货物。已知每个客户需要每种货物的数量,每个仓库存储每种货物的数量,每个仓库运输各种货物去各个客户的单位费用。判断所有的仓库能否满足所有客户的需求,如果可以,求出最少的运输总费用。题解:因为 K 种产品互相不干扰,所以关键是把 K 种产品分开求解。给出了两种slack方式。#include using namespace std;#defin

2011-10-10 23:00:09 693

原创 POJ 2516 Minimum Cost 最小费用最大流

题意:有N个客户,M个仓库,和K种货物。已知每个客户需要每种货物的数量,每个仓库存储每种货物的数量,每个仓库运输各种货物去各个客户的单位费用。判断所有的仓库能否满足所有客户的需求,如果可以,求出最少的运输总费用。题解:因为 K 种产品互相不干扰,所以关键是把 K 种产品分开求解。#include #include using namespace std;#define N

2011-10-10 22:57:16 794

原创 POJ 3984 迷宫问题 (BFS,水题)

题意:int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的

2011-10-09 19:42:40 5615 1

原创 POJ 2387 Til the Cows Come Home (Spfa)

题意:一头奶牛沿着路标回家,求最短路径。题解:注意处理重边。感觉不错,以后对于无向图就用vector构图,可以省去对重边的处理。对于有向图用记录头结点的边的方式构图。#include#include#includeusing namespace std;#define MAX 10000#define INF 9999999struct Edge { int v,

2011-10-08 23:30:35 627

原创 POJ 1511 Invitation Cards (Spfa)

题意:一群学生去城市的各个车站发邀请函,每个车站恰有一个学生。任意两个车站之间都可达,并且有一个特定的车费。假如学生们早上都从车站1出发,晚上从各个车站回到车站1,求总的最小花费。题解:人生第一道Spfa。题意很明确,求带权最短路径。回来的时候反向建图即可。#include #include using namespace std;#define N 1000001#d

2011-10-08 22:44:21 523

转载 Spfa算法

转自:http://www.cnblogs.com/zgmf_x20a/archive/2008/12/18/1357737.html求最短路径的算法有许多种,除了排序外,恐怕是OI界中解决同一类问题算法最多的了。最熟悉的无疑是Dijkstra,接着是Bellman-Fo

2011-10-08 21:19:49 794

转载 Bellman-Ford算法

转自:http://www.wutianqi.com/?p=1912Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。这时候,就需要使用其他的算法来求解最短路径

2011-10-08 21:09:26 9798 2

转载 二分图带权匹配

KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B[i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终成立

2011-10-05 20:50:24 1314

原创 POJ 2195 Going Home (二分图最大权匹配、KM算法)

题意:给你一张图,图上有n个人和n座房子,每个人需要回到一所房子,要求路程之和最小。...H.......H.......H....mmmHmmmm...H.......H.......H....题解:其实题目是求最小带权匹配,怎么化成求最大带权匹配呢?方法一可以将每个值取相反数。方法二用上界减去各个值。基本原理  该算法是通过给每个顶点一个标号(叫做顶

2011-10-05 20:39:45 1425

原创 POJ 1691 Painting A Board (DFS/状态DP)

题意:给定一个矩形块,它里面包含了n个小矩形块,现在要求将每个小矩形块涂上给定的颜色。涂色过程中,小矩形必须是整块整块的涂,并且只有当某个矩形上面的所有矩形都被涂色之后它才能被涂色。假如每只笔只能涂一种颜色,问至少需要换多少次笔。(第一次拿起笔也算一次)。题解:给小矩形块编号

2011-10-03 13:48:48 1775

原创 POJ 1724 ROADS (有限制的最短路径DFS/BFS)

题意:有n座城市,城市之间有道路,道路需要收费,现在Bob想从城市1去城市n,但是他所拥有的钱是有限制的。现在问Bob能否在有限的钱之内到达n城,若能则输出最短路径。题解:一开始用vector建图,果断TLE··。可能是从尾部添加邻接点的原因吧。#include #include using namespace std;#define N 10005#define

2011-10-03 00:40:01 1066

原创 POJ 3411 Paid Roads (DFS多次访问节点)

题意:n座城市由m条公路连接,每两座城市间可能有多条公路。这些公路都是需要收费的,并且有两种付费方式。例如从a到b:方式一在b处付费 r ;方式二在a之前(可能包含a)付费p,但是用方式二付费要求路径必须经过c点。要求从1到n得最小费用。题解:题目只要求最小费用,由于有重边的

2011-10-02 00:42:18 2188

C++ STL 标准模板库

ACMer必备.内容非常详尽,不过是英文版的额。

2012-07-24

空空如也

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

TA关注的人

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