自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Aszxqw

新博客地址 http://yanyiwu.com

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

原创 POJ3624 01背包入门题[DP]

01背包第一题。刚开始开的数组为int mat[N][W],然后内存超了。然后优化成这样既可。#include#define max(a,b) (a>b?a:b)using namespace std;//const int N=3410;const int W=13888;int mat[2][W];int n,w;int main(){ scanf("%d%d

2011-10-31 23:16:37 481

原创 背包问题

一.01背包问题给定一个容量为W的背包。和n个物品各为wi重量和价值各为ci的物品i。(1问放哪几个物品进去使总价值最大。顾名思义,01背包,01的0代表不放进去,1代表放进去。对于每个物品i都有01两种选择。如果用最原始的枚举法。从第一个物品开始对每个物品进行枚举放还是不放。这样的算法实际上是一棵n层二叉树,所以时间复杂度为(2^n)。显然应该有更好的算法来解决。

2011-10-31 22:23:49 541

原创 POJ2553 The Bottom of a Graph 强连通 tarjan

题意:此题最难的部分即是理解题意。注意要求得点的定义为:所有这个点能到达的点都能到达这个点。思路:强连通,缩点,找出出度为0的强连通分量集合,就是要求得点集合。#include#define min(a,b) (a<b?a:b)using namespace std;const int N=5005;bool mat[N][N];int dfn[N],lo

2011-10-30 19:28:14 506

原创 POJ 1236 Network of Schools 强连通图 tarjan

题意:每个学校有他的对象名单。即给你一个有向图。问题一:要求信息从某些节点进去,能到达所有其它节点。求出“某些节点”这个节点集合的最小值。问题二:要求添加“某些有向边”,满足无论信息从哪个节点进入,都能传达到所有节点。求“某些有向边“这个集合的最小值。思路:先用tarjan求出强连通分量,然后缩点形成一个有向无环图。有向无环图肯定存在入度为0的节点。入度为0的节

2011-10-30 15:59:41 674

原创 POJ3177 Redundant Paths 3352的双胞胎题 双连通分量

虽然基本上和3352是一样的题意,但是要数据比较严格,这题有可能出现重边,而3352不会有重边。思路:直接在POJ3352,即上一篇博文上的代码稍微改动。新建一个char match[N][N],如果用int则内存超了。#include#define min(a,b) (a<b?a:b)using namespace std;const int N=5005,

2011-10-30 13:13:45 546

原创 POJ3352 Road Construction 双连通分量和桥 tarjan

题意:给一个无向图,问你需要添加多少条边之后这个图变成双连通分量。关于桥和双连通分量之类的可以参看以下链接。http://www.byvoid.com/blog/biconnect/ 和http://blog.csdn.net/geniusluzh/article/details/6619575思路:/*一条无向边(u,v)是桥,当且仅当(u,v)为树枝边,且满足DFS

2011-10-29 11:23:20 1731

原创 POJ3160 Father Christmas flymouse 强连通tarjan算法+dfs+简单dp

题意:flymouse要去送礼物,送的每个人有一定的反馈comfort值,有正有负,给一个有向图,要你找出一条路径,沿着这个路径去送礼物可以使总的comfort值最大。注意题意里面的一个关键点:flymouse经过每个房间时,可以选择进去或者不进去,所以我们可以把负值的comfort值赋为0。思路:先用tarjan算法处理一遍强连通分量。然后缩点成有向无环图。然后简单d

2011-10-26 20:42:40 875

原创 POJ 2762 Going from u to v or ... 弱连通图 tarjan

题意:就是判断一个图是否为弱连通图。思路:先用tarjan处理一遍找出强连通分量。然后将每个强连通分量缩点,形成一个有向无环图。如果该有向无环图是一个无分叉的树的话,即是弱连通图。如果有分叉,则分叉两端的节点无法互相到达,即不是弱连通图。#include#define min(a,b) (a<b?a:b)using namespace std;const int N=

2011-10-25 19:20:35 822

原创 强连通图 学习笔记及tarjan模板

我是从算法导论看起的:定义:在一个有向图中,任意两个点都是互相可达的,则称为强连通图。解法步骤:1.先对每个节点dfs。计算出 每个节点的finishing time f[u]。2.对图进行倒置处理。3.对倒置图的每个节点,按照f【u】降序的顺序进行dfs。4.输出在步骤3中dfs时建立的每棵树的节点。这些树即分别是强连通分支。时间复杂度分析:在给定图G的邻

2011-10-24 23:02:27 908

原创 POJ1386 Play on Words 欧拉回路[并查集判断连通]

题目大意:给一些单词,如果某个单词的首字母和另一个单词的尾字母相同,则两个单词可以连接起来。要求判断能否把全部单词连接起来。思路:欧拉通路。先构图:每个字母为点。然后对每个单词,将单词的首字母和尾字母连一个单向边。#includeusing namespace std;const int N=100005;char str[1005];int n;st

2011-10-21 18:28:33 604

原创 POJ2230 Watchcow 欧拉回路[dfs+邻接表]

思路:很显然是一个欧拉无向图。因为要遍历每个边两遍而且方向不同。所以可以看成是有向图来处理。以下代码是 dfs+邻接表。这里注意的dfs和普通的dfs不一样在于终止条件。以前的dfs都是找到某个点后终止,现在是直到遇到某个点,那个点已经无路可走了,再终止。(因为题目已经保证要求的路径存在)还有就是有些人估计疑惑为什么没用到栈来输出。其实不用栈的原因很简单,就是欧拉回路的

2011-10-20 13:55:42 1017

原创 POJ2289 Jamie's Contact Groups 二分+最大流匹配

题目:给定人名和群组的关系,叫你把每个人分配到某个群组的关系,使这个分配方案满足最大的那个群组人数 最小。思路:二分图匹配。求法是用二分答案加最大流判定。#includeusing namespace std;#define MIN(a,b) (a<b

2011-10-10 21:45:20 996

原创 POJ2396 Budget 有上下界的最大流

题意很简单:就是给你一个矩阵,给定矩阵行的和 and 矩阵列的和。然后矩阵内每个数会受到一定约束。要你填好这个矩阵的每个数,满足约束的轻快下,让每行数的和and每列数的和满足题意。思路很简单:只要想到是用流网络即可。每个行i是一个点,每个列j是一个点。

2011-10-10 14:18:26 702

原创 POJ1966 Cable TV Network 点连通度

顾名思义。点连通度即使在一个图中,去掉多少个点可以使这个图不连通。因为点连通度的求法是构图时转化为边连通度来求的。而边连通度的求法:构造一个流网络,每个无向边的容量为1。任意取一个点作为源点。枚举剩下的店作为汇点,求最小割。枚举完取最小割最小的值就

2011-10-08 21:00:15 766

原创 《csharp高级编程》 学习笔记 第七章 委托和事件

第七章 委托和事件回调(callback)函数是windows编程的一个重要部分。回调函数实际上是方法调用的指针,也称为函数指针,是一个非常强大的编程特性。.NET以委托的形式实现了函数指针的概念。但特殊在于,与c函数指针不同,.NET委托是类型安全的。7

2011-10-08 19:17:58 6010

原创 《csharp高级编程》 学习笔记 第六章 运算符和类型强制转换

第6章 运算符和类型强制转换6.1 运算符c和c++开发人员应很熟悉大多数。在这只记录一些不熟悉的。(1).checked和unchecked运算符byte b = 255;checked{b++;}Console.WriteLine(b.To

2011-10-06 10:57:35 1864

原创 《csharp高级编程》 学习笔记 第五章 数组

第五章 数组5.1  简单数组5.1.1 数组的声明int [] myArray;5.1.2 数组的初始化myArray=new int [4];int[] myArray = new int[4] {4, 7, 11, 2};int[

2011-10-05 20:20:25 5590 2

原创 《csharp高级编程》 学习笔记 第四章 继承

第四章 继承4.1 继承的类型4.1.1 实现继承和接口继承● 实现继承:表示一个类型派生于一个基类型,拥有该基类型的所有成员字段和函数。● 接口继承:表示一个类型只继承了函数的签名,没有继承任何实现代码。接口继承常被看做一种契约:让类型派生于接口,来保证

2011-10-05 20:19:36 6825

原创 《csharp高级编程》 学习笔记 第三章 对象和类型

第三章 对象和类型3.1 类和结构类和结构实际上都是创建对象的模板。类和结构的区别是他们在内存中的存储方式:类是存储在堆(heap)上的引用类型,而结构是存储在堆栈(stack)上的值类型、访问方式和一些特征(如结构不支持继承)。但在语法上,两者非常相似。

2011-10-05 12:05:08 4409 1

原创 《csharp高级编程》 学习笔记 第二章 csharp基础

第二章 csharp基础2.3.1 变量的初始化对于变量的初始化c#的编译器更加严厉。大多数现代编译器把没有初始化标记为警告,但csharp编译器会标记为错误。csharp有两个确保变量在使用前进行初始化的方法:1.变量是类或结构中的字段,如果没有显示初始化,创建

2011-10-02 16:58:55 1595

原创 《csharp高级编程》 学习笔记 第一章 .net 体系结构

第一章 .net 体系结构几个概念:1.Microsoft Intermediate Language,MSIL或简称IL。2.Common Type System,CTS通用类型系统。3.Common Language Specification ,CLS

2011-10-02 00:13:31 907

原创 POJ2987 Firing 最大权闭合图

题意不难。思路很容易想到用网络流的模型。把那些关联关系用单向边来连接,但是没想好是怎么处理出最优解。都说用最大权闭合图。查了一下相关内容。我的理解是:其实也是流网络的应用。特殊的地方在于每个点的权值的转化:权值为正的接连源点S,权值为负的连接汇点T。中间的

2011-10-01 22:27:13 1324

空空如也

空空如也

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

TA关注的人

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