上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
  2012年6月13日
摘要: 最小生成树问题,kruskal算法的变形。代码如下:#include<stdio.h>#include<math.h>#include<stdlib.h>#define MAXN1 500+10#define MAXN 3000000int z, n, s, m, x[MAXN1], y[MAXN1], u[MAXN], v[MAXN], p[MAXN1], r[MAXN];double w[MAXN], flag[MAXN];int cmp(const void *_p, const void *_q){ int *p = (int *)_p; int * 阅读全文
posted @ 2012-06-13 20:20 BFP 阅读(160) 评论(0) 推荐(0) 编辑
  2012年5月23日
摘要: 最小生成树问题,注意消去固定边时的方法:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define MAXN 800#define MAXN1 300000double x[MAXN], y[MAXN], w[MAXN1];int n, p1, m, p[MAXN], u[MAXN1], v[MAXN1], r[MAXN1], vis[1010][1010];int cmp(const void *_i, const void *_j){ int *i 阅读全文
posted @ 2012-05-23 23:13 BFP 阅读(147) 评论(0) 推荐(0) 编辑
摘要: floyd算法的变形,输出格式问题要注意。。。代码如下:#include<stdio.h>#define MAXNC 100 + 10#define INF 100000 + 100int d[MAXNC][MAXNC];int C, S, Q, num;void init(){ num = 0; while(scanf("%d%d%d",&C, &S, &Q)) { if(C <= 1) break; else if(num != 0) printf("\n"); for(int i = 0; i <= 阅读全文
posted @ 2012-05-23 20:58 BFP 阅读(258) 评论(0) 推荐(0) 编辑
  2012年5月17日
摘要: 利用并查集求最短路,注意浮点数,再就是需要准备一下边集。#include<stdio.h>#include<math.h>#include<stdlib.h>#define MAXN 5000 + 100#define MAXN1 100 + 10int n, m, p1, p[MAXN1],r[MAXN],u[MAXN],v[MAXN];double w[MAXN], x[MAXN1], y[MAXN1];int cmp(const void *_p, const void *_q){ int *p = (int *)_p; int *q = (int * 阅读全文
posted @ 2012-05-17 23:54 BFP 阅读(174) 评论(0) 推荐(0) 编辑
  2012年5月16日
摘要: 最短路问题:floyd算法:注意:输出格式#include<stdio.h>#define MAXN 200int a, b, n, d[30][30], num;void init(){ num = 0; while(scanf("%d",&a) == 1) { for(int i = 1; i <= 20; i ++) for(int j = 1; j <= 20; j ++) if(i == j) d[i][j] = 0; else d[i][j] = MAXN; ... 阅读全文
posted @ 2012-05-16 00:27 BFP 阅读(168) 评论(0) 推荐(0) 编辑
  2012年5月14日
摘要: 贪心:#include<stdio.h>#include<stdlib.h>#define MAXN 100000 + 100int Ts[MAXN], Te[MAXN], r[MAXN], n, num;int cmp(const void *_p, const void *_q){ int *p = (int *)_p; int *q = (int *)_q; return Te[*p] - Te[*q];}void init(){ while(~scanf("%d",&n)) { for(int i = 0; i < n; i + 阅读全文
posted @ 2012-05-14 21:30 BFP 阅读(205) 评论(0) 推荐(0) 编辑
  2012年5月7日
摘要: 这道题想错了方向,一直纠结于背包运行过程中忽略了一些情况,比如:要选8这个物品,当体积是8的时候我选了一个,因为存在价值为1这样的物品,这就是一种情况,但是当容量是16的时候,因为是完全背包,我又要选一个8,也就是覆盖了前面的f[8],因此我怎样去记录最终组合的种数呢?比如我给的容量就是16:那么会有两种情况8×1+1×8,2×8;但实现起来却是很不容易;换个思路:我们设f[i]表示组成i面值的种数,则f[j] = f[j] + f[j-w[i]];相当于如果当前值j>w[i]的话,我们就选这个面值,因为有面值一的存在,必成立,又多了f[j-w[i]]种情况 阅读全文
posted @ 2012-05-07 19:51 BFP 阅读(284) 评论(0) 推荐(0) 编辑
  2012年5月4日
摘要: 参考了:http://par.cse.nsysu.edu.tw/~advprog/advprog2008/11081.doc。里面有一点不对,但思路是对的。字符串问题,题意是让我们在前两个字符串里抽取某些字符,组合为第三个字符串,当然必修要考虑到空集的存在,看到这个问题,我们用dp的思路将它分解,例如:给三个长度为len1,len2,len3的字符串,那么我们可不可以先求出长度为a,b,c,其中a<len1,b<len2,c<len3.由此原问题可以分解为子问题。那么当长度为a,b,c时如何推出len1,len2,len3这个组合呢?i,j,k为三个串的的那个前位置,首先我们 阅读全文
posted @ 2012-05-04 20:34 BFP 阅读(669) 评论(0) 推荐(0) 编辑
  2012年4月26日
摘要: 这道题因为那个score out给我蒙住了,其实说白了,就是给你一串字符串,让你从中找出有多少回文字串,这个回文字串可以是一个字母,也可以是多个。既然是动态规划题:我们肯定要这样想,让我们求长度为len的字符串有多少回文字串,那么长度为len-1的字符串有多少回文子串呢,如果我们求出了len-1的字符串,那么长度为len的字符串的回文字串的个数可不可以通过这个来求出呢,那么长度为len-1的母串可不可以通过len-2的母串求出呢,。。。。。当然上面的过程当然是可以的:接下来想一个串如果两端不等的话(ABBO):那么它的方式就等于 1 + ABB里面的种数 + BBO里面的种数 – 两个集合重复 阅读全文
posted @ 2012-04-26 22:37 BFP 阅读(552) 评论(0) 推荐(0) 编辑
  2012年4月25日
摘要: 大意:在中国,众通常用一双筷子吃饭。但是L先生与众不同:他用三支筷子吃饭。其中的一支长筷子用来叉取大块的食物,而剩下两支用作普通筷子。两支普通筷子的长度应尽可能的接近,而长的那支只要是三支中最长的就可以了。对于一幅筷子的长度A,B,C(A≤B≤C),定义函数(A-B)2为这副筷子的“难用度”。L先生邀请K个人参加他的生日聚会,并且想将他用筷子的方法介绍给其他人。他需要准备K+8副这样的筷子(给他自己、妻子、儿子、女儿、父亲、母亲、岳父、岳母以及K名客人)。但是L先生的筷子有很多不同的长度!给出所有筷子的长度,他需要找到一种组合K+8副筷子的方法,使得难用度的总和最小。这道题我们先降序排序,然后 阅读全文
posted @ 2012-04-25 00:13 BFP 阅读(326) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页