自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

去做一个会思考,善于思考的人。

  • 博客(17)
  • 收藏
  • 关注

原创 CF Array

http://codeforces.com/problemset/problem/224/B题意:给你一个含有n个元素数组,让你求出这个数组的一个区间[ l , r ],满足在这个区间中含有 k 个不同的数,且不存在x, y (l 思路: 要使[l , r] 含有k个不同的数,而[l , r] 的任何一个子区间都不满足有k个不同的数,说明[l , r]的端点在这个区间中只出现一

2013-12-29 08:56:46 969

原创 CF Bracket Sequence

http://codeforces.com/problemset/problem/223/A题意:给定一个只含有’[‘  ']'  '('  ')' 的字符串,它不一定是合法的,求出它的一个含有 '[' 最多的并合法的字串。思路:相当于括号匹配的问题,多了判断'['的个数而已。以 ([ ] )(( 为例,该字符串每个字符对应下标为0 ,1,2,3,用hash数组记录与当前字符串

2013-12-28 21:59:03 755

转载 有向图强连通分量的Tarjan算法

[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}

2013-12-27 15:45:39 810

原创 poj 2186 Popular Cows(tarjan + 强连通分量 + 缩点)

http://poj.org/problem?id=2186题意:有n头牛,m个膜拜关系,膜拜关系是不可逆的而且是单向传递的,比如A膜拜B,B膜拜C,那么A也膜拜C,但B不一定膜拜A。最后问有多少头牛满足条件:除了它自己,其他所有的牛都膜拜它。思路:问题可以抽象为:给定一个有向图,n个顶点,m条有向边,有多少个顶点满足:其他所有的点都能到达该点。首先假如图G是一个有

2013-12-27 15:38:23 1191

原创 poj 3694 Network(tarjan + LCA)

http://poj.org/problem?id=3694题意:对于一个无向连通图,问加入某条边后,图中有桥的数目。思路:根据tarjan算法求出初始图的桥的数目,并用数组bridge标记桥的终点,在tarjan深搜树中求出每个节点的父节点(数组father表示)以及它们的深度,用于以后迭代求LCA。因为加入某条边后,树中就会存在环,而环中的每条边都不再是桥,这就与求LCA有关了

2013-12-26 16:58:37 1098

原创 poj 1330 Nearest Common Ancestors(LCA模板)

http://poj.org/problem?id=1330题意:给出两个点,求出这两个点最近的公共祖先。求LCA的模板题。大致思路就是访问到某个节点时,先将它自己加入集合中,然后递归访问它的子树,同时把子树加入到集合中来。子树搜索完毕后,判断该节点是否是输入的两个节点之一,若是,并且另外一个也已标记为访问过,那么另外一个节点的祖先便是他们的LCA。#include#includ

2013-12-26 15:38:52 907

原创 poj 1144 Network(割点)

http://poj.org/problem?id=1144题意很简单,已知图中各边的连接情况,求割点的个数。注意输入格式。。#include#include#include#includeusing namespace std;vector edge[110];int dfn[110];//记录节点被访问的深度int vis[110];//记录该节点当前的状态,0表示

2013-12-26 11:04:43 806

原创 Poj 1523 SPF(割点 + tarjan算法)

http://poj.org/problem?id=1523题意:给一个连通网络,其节点数目思路:tarjan算法:从第一个节点开始深度优先搜索,同时记录每个节点i的访问次序以及该节点所能到达的最高辈分(深度最低)的祖先,对这两个数比较确定这个点是否是割点;同时用subnets数组记录,若是割点并且是搜索树的根节点,则它的儿子数就是删除节点 i 后得到的连通分量,若是割点并且是非根节点

2013-12-22 19:53:55 891

转载 图的割点,桥,双连通分支

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

2013-12-22 19:31:32 1062

原创 连连看

http://acm.hdu.edu.cn/showproblem.php?pid=1175与普通的BFS不同的是这里的vis数组不是标记是否被访问过,而是记录到这个点的最小转弯次数。#include#include#include#includeusing namespace std;const int INF = 0x3f3f3f3f;int grid[1100][110

2013-12-19 08:49:56 754

原创 各种排序

数据结构学完了,总结一下排序。没有那种排序永远是最优的,各有千秋吧。#include#include#includeusing namespace std;int * insert_sort(int a[], int n)//直接插入排序{ int i,j; for(i = 2; i <= n; i++) { if(a[i-1] > a[i]) { a[0] =

2013-12-18 19:47:07 857

原创 Invitation Cards

http://acm.hdu.edu.cn/showproblem.php?pid=1535题意:有编号为1~p的站点,有Q条公交路线,公交车路线只能从起点走到对应的终点,而且是单向的,每条路线有其对应的车费。早上有p个人从站点1出发,到达与其编号对应的站点(编号为i的人到达编号为i的站点),晚上从各自站点回到1站点,问他们来回的最小费用之和。 思路:很水的题。一个是求源点到其他点

2013-12-10 14:45:02 898

原创 方格取数(2)

http://acm.hdu.edu.cn/showproblem.php?pid=1569与Hdoj1565类似,但 这里是n*m的矩阵,而且n、m#include#include#include#include#includeusing namespace std;const int INF = 0x3f3f3f3f;int map[55][55];int a[260

2013-12-09 21:02:02 858

原创 方格取数(1)

http://acm.hdu.edu.cn/showproblem.php?pid=1565算法:最大点权独立集 = 总点数 - 最小点权覆盖集最小点权覆盖集 = 最小割 = 最大流点独立集:点独立集是无向图G的子集,该子集的导出子图不含边,即任两个在该集合中的点在原图中都不相邻。最大点权独立集:在带权无向图G中,点权之和最大的独立集。点覆盖集:点覆盖集是无

2013-12-09 19:07:46 835

原创 Poj3422 Kaka's Matrix Travels

http://poj.org/problem?id=3422题意:有一个n*n的矩阵,每个方格有一个非负数,每次从左上角走到右下角,而且只能向右走或向下走,将走过的数加起来,再将该方格数置为0,每次走都会得到一个最大的和,走k次,求最大和。思路:最小费用最大流问题,关键仍然是建图。建好图后,每次spfa找到一条s到t的最长路径,然后增光之。这里求得是最大费用,所以要把边上的费用换成相反数,

2013-12-08 21:32:05 780

原创 CF371

http://codeforces.com/problemset/problem/371/A一个序列只含有0和1,令循环节的长度为k,要使每k个循环节对应数字都相等,最少要改变几个数字。水题。#include#includeint main(){ int n,k; int a[110]; while(~scanf("%d %d",&n,&k)) {

2013-12-08 20:08:15 870

原创 CF 370

A:http://codeforces.com/problemset/problem/370/A数学#include#include#include#includeusing namespace std;int main(){ int chess[10][10]; memset(chess,0,sizeof(chess)); for(int i = 1

2013-12-08 13:30:38 953

空空如也

空空如也

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

TA关注的人

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