2011年9月26日

最大子序列问题小结

该文被密码保护。 阅读全文

posted @ 2011-09-26 18:58 buptLizer 阅读(47) 评论(0) 推荐(0) 编辑

2011年9月25日

poj3320 快排离散

摘要: 题目要求求出包含所有ideas的最段序列,如果整数的范围很小的话就简单了,但是这个题目中idea可能很大,因此无法直接用数的大小对应下标所以必须离散化才可以,因为数一共有1000000,所以最大编号最大为1000000,利用快排离散。m[i]为原始数据,s[i]为压缩后每个idea对应的编号,index[i]为每个编号出现的下标,其实这个题就是之前遇到的那个求包含给定字符集的最短子串是一个问题,只是这个题目多了一个离散。源代码:#include <iostream>#include <algorithm>#include <stdio.h>using nam 阅读全文

posted @ 2011-09-25 12:32 buptLizer 阅读(440) 评论(0) 推荐(0) 编辑

2011年9月23日

poj1804逆序数

摘要: 冒泡求逆序数View Code #include <iostream>#include <stdio.h>using namespace std;const int N=1001;int m[N],s[N];int main(){ int t,n,i,j,sstep,mstep,tmp,cnt=1; bool flag=false; scanf("%d",&t); while(0 <= --t) { scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d&qu 阅读全文

posted @ 2011-09-23 10:51 buptLizer 阅读(205) 评论(0) 推荐(0) 编辑

2011年9月22日

有道笔试面试题(1)

摘要: 最基本:虚函数,quick sort,三次握手 ok,进程通信 1.虚函数 作用:实现动态联编,即在程序执行期间动态的选择合适的成员函数。 封装、继承和多态。 2.快排 void quickSort(int l,int r) { if(lb[j]) {++j;} else {++i;} } } 12.//最大子矩阵和 m[N][N] int getMaxSub(int *a,int len) { int curMax; curMax=a[0]; for(i=0;i>n>>m; for(int i=0;iresult) result=tmp; } } } 13.//链表快排 n 阅读全文

posted @ 2011-09-22 15:13 buptLizer 阅读(830) 评论(0) 推荐(0) 编辑

钩子函数(一道面试题的启发)

摘要: 在10M的源码中查找内存泄露。这个是网上随便看的一个面试题,看到博主写的解法,提到一个钩子函数,我连什么是钩子函数都不知道,人家都能想到用这个方法来解决,感觉自己太龊了,如果面试中问到这种题,肯定挂了。下面先介绍下钩子函数。摘至网上:钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。对每种类型的钩子由系统来维护一个钩子链,最近安装的钩子放在链的开始,而最先安装的钩子放在最后,也就是后加入的先获 阅读全文

posted @ 2011-09-22 13:25 buptLizer 阅读(445) 评论(0) 推荐(0) 编辑

2011年9月18日

欢迎光顾我的博客

摘要: 欢迎大家光顾我的博客,喜欢我的可以给我留言,如果发现哪个题目有什么问题或者不正确的,给出的评论会仔细给你回复的奥。 阅读全文

posted @ 2011-09-18 22:18 buptLizer 阅读(77) 评论(0) 推荐(0) 编辑

poj 1816 trie树+dfs(强烈推荐,含有通配符的匹配)

摘要: 这个题目花了我一晚上才调出来,其实也不难,就是在trie树上搜索给定的单词,但是麻烦的一点是考虑的情况非常多,比如模式串可能重复,或者*?连续出现,最开始都没考虑,程序敲出来直接提交一看WA,然后看discuss里面,说模式可能重复我才知道情况比我想的要复杂,重新该了下程序,还是WA,主要是没考虑到情况*后面忘了判断有无*或者?的情况,最后WA了好几次才A的,程序跑了235M,前30呢,哈哈,多亏了某某大牛的一组测试数据。我会在代码后面附上这组数据,希望后面做这个题得不要犯我这钟低级错误。测试数据:View Code 1000 100zdgnjcjbftwkmitipstcz*ygn?srhw 阅读全文

posted @ 2011-09-18 22:16 buptLizer 阅读(8961) 评论(0) 推荐(0) 编辑

2011年9月17日

poj3368 RMQ

摘要: 题目大意说给出一系列数,这列数是不降的,然后任意给出一个区间[i,j],让你求出那个重复次数最多的数的出现次数。由于给出的查询次数很多,我就考虑用RMQ来解,但是这个不能直接套用模板,因为加入我们对区间[i,j]进行查询,如果从k处分开取两边区间的最大的重复次数是不一定正确的,因为分开的那个地方可能把实际重复次数最多的那个数一分为二,这样求出的就不是最大的了,所以只需要多加一个判断,从分开出往左往右循环找到最大的重复次数,看这个数是否大于我们当前得到的那个数(这个数是取左右区间的最大值)。代码如下:#include <iostream>#include <cmath># 阅读全文

posted @ 2011-09-17 18:04 buptLizer 阅读(1107) 评论(0) 推荐(0) 编辑

poj2452 Sticks Problem RMQ问题

摘要: 题目大意说:给出一系列的木棒的长度,求出一个最大的区间[x,y],满足所有的len[k]>len[i] && len[k]<len[j] ,i<=k<=j。我看的题目分类说这个题目用RMQ,所有就用了RMQ实现,由于开始的时候我是枚举的所有的区间,所以肯定超时,后来改为从i找出以i开始的最大区间范围,然后在这个范围内求出最大值的下标j,那么j就是从i开始的所有>i且<j的最大区间,枚举采用二分,这样时间复杂度为O(nlogn).#include <iostream>#include <stdio.h>#include 阅读全文

posted @ 2011-09-17 12:01 buptLizer 阅读(353) 评论(0) 推荐(0) 编辑

2011年9月16日

poj1330Nearest Common Ancestors LCA问题 dfs+rmq

摘要: 题目意思很简单就是求两个节点的LCA,这个问题可以转化为rmq问题,求区间的最小值。就是首先利用dfs遍历图的所有顶点并且每条边会遍历两次,这样遍历的顶点总共2*n-1个,依次将遍历的边存在数组e[i]中,并且记录每个顶点的深度,存入数组level[i]中,我们再开一个数组存每一个顶点首次出现的下标,记录在idx中,这样任意给出两个顶点,我们求出他们对应的下标x,y,然后根据level数组在区间[x,y]中找出深度最小的下标r,这个下标对应的e就是我们要求的节点。这个题目就是将LCA转化为在某段区间中找高度最小的那个顶点。代码如下:#include <iostream>#inclu 阅读全文

posted @ 2011-09-16 21:46 buptLizer 阅读(233) 评论(0) 推荐(0) 编辑

导航