上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 20 下一页

2013年7月25日

hdu 1024(最大和连续子序列增强版)

摘要: 题意:最大和连续子序列的增强版,要求从一序列中取出若干段,这些段之间不能交叉,使得和最大并输出。分析:用dp[i][j]表示前j个数取出i段得到的最大值,那么状态转移方程为dp[i][j]=max(dp[i][j-1]+a[j],dp[i-1][k]+a[j]) i-1#include#includeusing namespace std;int a[1000001],dp[1000001],max1[1000001];int max(int x,int y){ return x>y?x:y;}int main(){ int i,j,n,m,temp; while(scanf... 阅读全文

posted @ 2013-07-25 17:09 后端bug开发工程师 阅读(2520) 评论(0) 推荐(0) 编辑

2013年7月22日

hdu 1078(dfs记忆化搜索)

摘要: 题意:容易理解...思路:我开始是用dfs剪枝做的,968ms险过的,后来在网上学习了记忆化搜索=深搜形式+dp思想,时间复杂度大大降低,我个人理解,就是从某一个点出发,前面的点是由后面的点求出的,然后一直递归先求出后面的点,最后达到求解的效果。代码实现:#include#include#includeusing namespace std;int map[105][105],count[105][105];int n,k;int b[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int dfs(int x,int y){ int i,j,temp,max=-0,t... 阅读全文

posted @ 2013-07-22 09:35 后端bug开发工程师 阅读(1234) 评论(0) 推荐(0) 编辑

hdu 1175(广搜)

摘要: 题意:容易理解...思路:我开始的思路不好实现,而且有漏洞,时间复杂度也高,后来在网上学了下别人的方法,真心感觉很牛B,不仅代码好实现,而且时间复杂度比较低,具体看代码实现吧!!代码实现:#include#include#include#includeusing namespace std;struct node{ int x; int y; int count;};int visited[1005][1005];int b[4][2]={{-1,0},{1,0},{0,-1},{0,1}};int map[1005][1005];int n,m;int sx,sy,ex,e... 阅读全文

posted @ 2013-07-22 09:24 后端bug开发工程师 阅读(373) 评论(0) 推荐(0) 编辑

2013年7月13日

hdu 4300(kmp)

摘要: 题意:说实话这个题的题意还真的挺难懂的,我开始看了好久都没看懂,后来百度了下题意才弄懂了,这题的意思就是首先有一个字母的转换表,就是输入的第一行的字符串,就是'a'转成第一个字母,'b'转成转换表的第二个字母·······然后下面一个字符串是密文+明文的形式的字符串。就是说前后两段是重复的,只不过通过转换表转换了下。而且后面一段可能不完整,让我们补完整。思路:这道题我很久之前就已经a掉了,当时是用普通的kmp做的,稍微变通下就行了。只不过现在正在学习扩展kmp,所以就用扩展kmp做了下,个人觉 阅读全文

posted @ 2013-07-13 17:31 后端bug开发工程师 阅读(1983) 评论(0) 推荐(0) 编辑

2013年7月12日

hdu 3068(最长回文)

摘要: 题意:容易理解...思路:可以用扩展kmp来做,但是我还没怎么弄懂,时间复杂度O(n*logn),而manacher算法,第一次听说,代码比较短,不难理解,和扩展kmp有点类似,时间复杂度为:O(n),所以manacher算法更好吧!学习这个算法我推荐一个好的博客:http://blog.csdn.net/kg_second/article/details/8865210代码实现:#include#includeusing namespace std;char str1[110010],str2[110010*2];int n,a[110010*2];int min(int x,int y){ 阅读全文

posted @ 2013-07-12 16:29 后端bug开发工程师 阅读(1502) 评论(0) 推荐(0) 编辑

2013年7月6日

扩展kmp

摘要: 扩展kmp题目:hdu 3068、hdu 4300、hdu 3613、hdu 1867、hdu 4333、hdu 4513、poj 2185http://blog.csdn.net/kg_second/article/details/8865210http://hi.baidu.com/lewutian/item/0c5e49c75a4c8154bcef6900http://www.freopen.com/?p=10432 阅读全文

posted @ 2013-07-06 10:48 后端bug开发工程师 阅读(238) 评论(0) 推荐(0) 编辑

2013年6月30日

扩展kmp

摘要: 刘雅琼写的论文讲得挺好的,你们先学习下,然后再来看代码就比较简单了!!#include#includeint next[1000],extend[1000];char S[1000],T[1000];void get_next(){ int a,p,k,j,len; int L; len=strlen(T); next[0]=len; a=0; while(a=p) { j=p-k+1>0?p-k+1:0; while(j+ktlen?tlen:slen; a=0; while(a=p) ... 阅读全文

posted @ 2013-06-30 11:19 后端bug开发工程师 阅读(366) 评论(0) 推荐(0) 编辑

2013年6月5日

hdu 4515(关于时间的穿越)

摘要: 题意:容易理解.分析:对于这种类型的题目我们以后可以把它当做一种模板题来做,首先我要处理的就是把时间变到从一年的最后一天开始穿越,分为两种情况:一种是往前穿越,另一种是往后穿越,当写代码的时候有些区别需要注意的,具体看代码实现吧!!代码实现:#include<stdio.h>#include<string.h>int y=2013,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int runnian(int n)//判断是否是闰年{ if((n%4==0&&n%100!=0)||n%400==0) retur 阅读全文

posted @ 2013-06-05 12:07 后端bug开发工程师 阅读(246) 评论(0) 推荐(0) 编辑

2013年6月4日

后缀数组

摘要: 后缀数组:从今天起开始新一轮的学习--《后缀数组》。第一步:学习后缀树的建立,好的资料:http://hi.baidu.com/zealot886/item/5d35b442d059701a886d1072。看了大概两个小时,基本的意思看懂了,这是采用了压缩的原理很好的建立了一棵后缀树,知道了它的用途:1、查找一个字符串T是否在字符串S中出现过,如果出现过的话必然是某个后缀的前缀;2、查找一个字符串T在字符串S中出现的次数如果T在S中出现了两次,则S应有两个后缀以T为前缀,重复次数统计出来就行了;3、字符串S中最长重复子串(两次或两次以上),找到最深的非叶节点,为什么要非叶节点呢?因为既然是要 阅读全文

posted @ 2013-06-04 20:48 后端bug开发工程师 阅读(410) 评论(0) 推荐(0) 编辑

2013年6月3日

hdu 4279(规律题)

摘要: 题意:容易理解.分析:做了这道题,我的收获就是碰到一些数学题可以找规律,这种题用常规方法是无法解决的,所以只能找规律。代码实现:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(){ int T; __int64 m,n; __int64 sum1,sum2; scanf( "%d", &T ); while( T -- ) { scanf( "%I64d%I64d", &m, & 阅读全文

posted @ 2013-06-03 21:08 后端bug开发工程师 阅读(423) 评论(0) 推荐(0) 编辑

上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 20 下一页

导航