自定义博客皮肤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

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

原创 POJ3903 Stock Exchange 最长上升子序列DP]

题意:裸的最长上升子序列。思路:传统的O(N^2)的DP没法过。用O(NLOGN)的贪心方法过。#includeusing namespace std;const int N=100005;int n;int stack[N];int sp;void insert(int t){ int head=1; int tail=sp-1; int mid; wh

2011-11-26 16:33:41 1414

原创 POJ1953 World Cup Noise DP水题

巨水的dp。思路很简单:每次dp[i]都是和dp[i-1]时候的0的个数和1的个数有关而已。打表之后发现是斐波那契数列。。。。。。#includeusing namespace std;const int N=50;long long int dp[N];int n;void solve(){ dp[1]=2; long long a=1,b=1; for(int

2011-11-26 14:04:26 602

原创 POJ1050 TO THE MAX [DP]

多天之前就理清了这题的思路,因为这礼拜六考通原,一直没开编译器A了这题。终于在考通原前一天憋的蛋疼A之。题意:求最大矩阵。思路:是很好的最长连续子序列的变形题。一维最长连续子序列状态转移方程:dp[k]=max(dp[k-1]+mat[k],mat[k]);(*)现在是求最大矩阵:启发:试想,我们求出的最大矩阵和之前一维的最大子序列的差别就是多了连在一起的几

2011-11-25 20:59:59 531

原创 POJ2479 Maximum sum 最长连续子序列[DP]

题意:先给一个序列,求两个最长连续子序列的和,看公式就很容易理解题意。思路:最长连续子序列的状态转移方程 f[i]=max(f[i-1]+w[i],w[i])解决这道题的关键点在于要先正序处理一遍,然后再逆序处理一遍。然后枚举这个序列的分割点。这样时间复杂度为O(n);#include#define max(a,b) (a>b?a:b)using names

2011-11-12 19:34:28 662

原创 POJ1458 Common Subsequence LCS问题入门题[DP]

入门题。#include#include#define max(a,b) (a>b?a:b)using namespace std;char s1[500],s2[500];int n1,n2;int mat[2][500];int main(){ while(scanf("%s%s",s1+1,s2+1)!=EOF) { memset(mat,0,sizeof(m

2011-11-12 16:31:36 446

原创 POJ1014 Dividing 多重背包[DP]

题意:有一些价值不等的石头,要把他们均分成两份。问是否能均分。思路:多重背包入门题,价值和重量相等。总价值除于2作为背包问题的w。然后进行多重背包dp,看是否能等于w。#include#define max(a,b) (a>b?a:b)using namespace std;const int N=200;const int W=60000;int n,w;

2011-11-11 10:53:50 537

原创 POJ2063 Investment 完全背包[DP]

算是完全背包入门题吧。#include#define max(a,b) (a>b?a:b)using namespace std;const int inf=2001000;const int year=45;int w,n,y;struct { int interest; int w;}bond[15];int mat[inf];int dp(int w){

2011-11-10 13:30:37 537

原创 AVR 单片机小学期 12864液晶 双人贪吃蛇游戏

这日志算是记录一下吧。之所以比较认真对待这个小学期,是因为一个同学找我(因为这个小学期是两人一队验收)。说想认真做一下分数得高一点。然后我就答应了。我就负责编,刚开始因为12864他把管脚插错了,总是不行,刚开始我还比较急躁。觉得他连硬件电路都搭不好我怎么编,而且眼看着只剩两三天时间就验收了。好在后来电路搭好了(就一个管脚接错了而已!),而且我编程顺利,最后验收效果不错。我

2011-11-07 21:08:46 2822 1

原创 BOJ 1473 失落 按位异或

Description一组数字,本是两两相同,但由于某种意外,一个数字消失了,请你找出失落的那个数字吧。Input多组输入,以EOF结尾。对于每组输入,第一行为一个整数n(0 Output对于每组输入,输出一行,包括一个整数,即失落的那个数。Sample Input532443Sample Output

2011-11-03 09:12:11 472

原创 BOJ 1501 多彩瓜 并查集

Description    dalong的舅舅最近到外地旅游时给dalong带回来一种神奇的水果:多彩瓜。这种瓜太漂亮了,它有很多层,每一层都是一种颜色。由于多彩瓜放久了会变坏,dalong决定每天吃一层,可是多彩瓜有好多层,每天吃一层的话还没吃完多彩瓜就坏了,因为多彩瓜颜色很多,dalong把一些很相近的颜色认为是同一种颜色,这样合并颜色后多彩瓜就没有原来这么多层了,dalong就可以在多

2011-11-03 09:05:25 480

原创 BOJ 1485 修改顺序 拓扑排序

Description    champ最近在修改一个游戏,他希望通过修改得到一个拥有全属性、全装备、全物品……的存档。    经过champ初步统计,它需要修改N个数据才能达到目的。(数据编号从1到N)    由于游戏本身采取了一些反作弊措施,有时会将用Ai数据去恢复Bi数据。所以champ修改数据时必须先修改Ai然后再修改Bi,以防止程序出错或崩溃。    现在,champ采集

2011-11-03 08:55:54 454

原创 BOJ 1433 Tom 的潜望镜 优先队列+BFS

Description    Tom和Jerry这对活宝最近又开始闹腾了,为了和Jerry斗智斗勇,Tom特地到北邮物理系学习光学的知识,通过自己的不懈努力,他终于学会了潜望镜的制作。学业期满后,他决定和Jerry来一次比赛,在比赛之前,我们先来看看潜望镜的相关知识:    上图就是一个简单的潜望镜,光线经过镜面反射后转过90度射出。于是如图的潜望镜可以使上下两个孔互相看见。

2011-11-03 08:36:16 528

原创 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 998

原创 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

原创 POJ2455 Secret Milking Machine 典型二分答案+最大流判定

表示被这道题整得辛苦。刚开始是P=40005写成了P=4005。wa了无数次之后才发现是这个问题。然后是tle。因为刚开始因为最大流做题惯性有邻接表来存储。一直tle好久。然后再恍然大悟要用邻接矩阵。思路其实挺简单:有典型套路可做。这题很明显就是要“最短路”,但是这里的最短路是最长的权值最短,不是精确意义上的最短路。然后再有一个约束就是要求出好几条不重叠的“最短

2011-09-30 23:42:44 564

原创 POJ3308 Paratroopers 最大流最小割

题意很显然,但是要注意product是有乘积的意思,即这次比较特殊的是不是求权值和最小,而是权值积最小。思路:1.权值积最小记得要用对数来处理。2.熟悉二分图最大匹配的就可以看出其实这题是个二分图最小权值点覆盖。二分图的X是行,Y是列,如果有伞兵(i,j)即有响应

2011-09-30 13:35:45 680

原创 POJ3204 Ikki's Story I - Road Reconstruction [最大流]

我觉得算是比较简单的最大流了吧。主要是要理解清楚题意。题意:一个有向图,源点汇点已经确定,有向边已经知道,要求出增加某单条边得权值可以使最大流增加的单条边的个数。思路:其实使最大流增加这个条件就相当于寻找增广路径。先一边最大流处理过去。然后枚举每条饱和的单向边(此时权值为0),使其权值+1,如果bfs()返回true,即找得到增广路径。即这条边满足题意,即ans++。这样既可。

2011-09-29 20:54:00 763

原创 POJ2391 Ombrophobic Bovines 二分+最大流dinic

//floyd+二分答案+最大流判断 //但是一直wa,改天再详细查查原因。//后来查出来是构图原因,修改的地方已经在注释中。//现在AC了。//我觉得代码写得还算容易看懂吧。#includeusing namespace std;#define MIN(

2011-09-28 23:11:11 467

原创 poj3228 Gold Transportation 并查集

poj3228 Gold Transportation思路是并查集。并查集是在学习最小生成树kruskal算法的时候学习的。印象比较深。kruskal是从边的角度进行的得一种贪心算法。现在这道题其实很类似最小生成树kruskal算法,但是并它要简单得多

2011-09-26 23:04:53 688

原创 POJ3189 Steady Cow Assignment 二分枚举+dinic最大流

但是不幸的是,一直超时。查不出来是不是我哪写错了。还是难道非得sap?#includeusing namespace std;#define MIN(a,b) (a<b?a:b)#define MAX(a,b) (a>b?a:b)const int N=1005;c

2011-09-26 18:04:11 773

空空如也

空空如也

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

TA关注的人

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