2013年4月16日

hdu 1521(标准的指数型母函数)

摘要: 题意:就是求排列数,易理解~分析:这是一道标准的指数型母函数题目,只要是知道如何避免重复的问题,那就是除以阶乘,这个在高中的时候排列组合中已经学到过,不过这个题目还是要注意下精度问题,开始的时候我是没注意好,导致一直错。建议看下这个资料:http://www.wutianqi.com/?p=2644,讲得还好~代码实现:#include<stdio.h>#include<string.h>double a[15];void shezhi(){ int i; a[0]=a[1]=1; for(i=2;i<=10;i++) a[i]=a[i-1]*i;}int ma. 阅读全文

posted @ 2013-04-16 21:40 后端bug开发工程师 阅读(1327) 评论(0) 推荐(0) 编辑

2013年4月14日

hdu 3746(KMP的循环节问题)

摘要: 题意:给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数。例子:abcabc 已经循环2次,添加数为0abcac 没有循环2次,添加字符abcac。数目为5.abcabcab 已经循环过2次,但第三次不完整,需要添加数为1.分析:就是一个简单的KMP循环节问题,但我只能说杭电的数据太水了,一开始我写的一个明显有BUG的代码也能够AC,算了不说了!!代码实现:#include<iostream>#include<cstring>using namespace std;char a[100001];int next[100001];int main(){ i 阅读全文

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

2013年4月9日

hdu 2079(01背包+多重背包或者用母函数)

摘要: 题意:易理解...分析:01背包+多重背包,主要思考的是如何避免重复,因为是01背包所以我把同种类型的物品一次装入一个背包里,自己好好思考吧!!这道题挺好的!!!当然用母函数也容易理解,母函数更好理解吧!!代码实现:背包实现:#include<stdio.h>//可以说是01背包+多重背包#include<string.h>int main(){ int T,n,m,i,j,k; int a[10],num[10],dp[45]; scanf("%d",&T); while(T--) { scanf("%d%d",& 阅读全文

posted @ 2013-04-09 19:14 后端bug开发工程师 阅读(1300) 评论(1) 推荐(0) 编辑

2013年4月4日

hdu 1385(求出最短路并输出最短路径)

摘要: 题意:容易理解...分析:比较简单的最短路问题,但要注意的是字典序问题,我是被这道题坑得要死了,用迪杰斯特拉一直WA,至今不知道错哪里了,而弗洛伊的算法做出来是有BUG的,但是在杭电上是能够AC的,真心坑爹啊!!!!!AC代码如下:#include<stdio.h>#include<string.h>int map[1001][1001],path[1001][1001],cost[1001],n;void Floyd(){ int i,j,k,len; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=.. 阅读全文

posted @ 2013-04-04 19:28 后端bug开发工程师 阅读(782) 评论(0) 推荐(0) 编辑

2013年3月31日

hdu 4512(最长公共递增子序列加强版)

摘要: 题意:就是让你求出给定序列的最长的一个左右对称的并且左边递增右边递减的子序列。 思路:可以说是一个最长公共递增子序列的加强版,推荐你看下这个资料:http://www.clarkok.com/blog/?p=353,讲得挺好的,学会这个之后就是如何控制左右对称的问题了 代码实现: 阅读全文

posted @ 2013-03-31 16:15 后端bug开发工程师 阅读(921) 评论(0) 推荐(1) 编辑

hdu 1176(一道简单的dp)

摘要: 题意:很容易理解...思路:可以说是数塔(hdu 2084)的类似题,做这个题得时候我们可以先画个图,在第0秒的时候在5位置,第一秒的时候可以在4,5,6位置然后依次类推,然后很容易观察出问题的解法了,其实从上往下推和从下往上推都可以,只不过从下往上推要好做一点,这里我给出了两种方法的解题代码。代码实现:#include<stdio.h>//从下往上推的#include<string.h>int a[100005][15],dp[100005][15];int nima(int i,int j){ int x1,x2,x3,temp; x1=j-1;x2=j;x3=j+ 阅读全文

posted @ 2013-03-31 11:05 后端bug开发工程师 阅读(236) 评论(0) 推荐(0) 编辑

2013年3月30日

简单的并查集

摘要: [1392] 我们必须向前推进!你要来一包么时间限制: 1000 ms 内存限制: 65535 K问题描述现在初中生高中生竟然开始抽烟了,真是太不像话了,不过作为一个无奸不商的烟草商,小白菜已经瞄准这块商机无限的市场了。他知道在某个学校里有n(5 <= n <= 50000)个学生,可人家毕竟是学生,直接询问他抽什么烟不太好,学生们也不愿意说,真烦躁。不过小白菜想到了一个办法,就是每次抓两个人来询问是不是抽同一种烟。每次他都会记下回答是yes的两个学生,一共记了q(2 <= q <= n*(n- 1)/2)对学生。现在小白菜捧着一大堆数据来找你,他不需要知道每个人抽什么 阅读全文

posted @ 2013-03-30 15:04 后端bug开发工程师 阅读(251) 评论(0) 推荐(0) 编辑

2013年3月28日

hdu 1003(最大连续字串)

摘要: 题意:很容易理解不用过多的解释。。。分析:因为要求是连续的,所以只要它这左边的大于零就相加,然后以此类推,难点是记录序列的起点和终点,具体看我的代码吧!!代码实现:#include<stdio.h>#include<string.h>int a[100001];int main(){ int T,n,i,j,sum,max,f,r,f1; scanf("%d",&T); for(j=1;j<=T;j++) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("% 阅读全文

posted @ 2013-03-28 11:31 后端bug开发工程师 阅读(308) 评论(0) 推荐(0) 编辑

2013年3月26日

hdu4521(最长递增子序列的二分思想)

摘要: 题意:就是求一个序列的最长递增子序列,但是下标有要求就是新的序列的相邻项的下标相差d.思路:在原来求最长递增子序列的基础上加一些条件使得相邻项的下标相差d....代码实现:#include<stdio.h>#include<string.h>int a[100005],dp[100005],b[100005];int main(){ int n,d,i,temp; while(scanf("%d%d",&n,&d)!=EOF) { int p,r,m,len=1,max=1; for(i=0;i<n;i++) { scanf(. 阅读全文

posted @ 2013-03-26 23:09 后端bug开发工程师 阅读(285) 评论(0) 推荐(0) 编辑

最长递增子序列(时间复杂度n*logn)

摘要: 利用二分的思想将时间复杂度降到了n*logn,很好~代码实现:#include<stdio.h>//时间复杂度为(n*logn)#include<string.h>int a[5001],dp[5001];int main(){ int i,n,len,m,r,p; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) scanf("%d",&a[i]); dp[0]=-1000000; dp[1]=a[0]; len=1; for(i=1;i<n;i++) ... 阅读全文

posted @ 2013-03-26 15:18 后端bug开发工程师 阅读(385) 评论(2) 推荐(0) 编辑

导航