上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
  2012年8月3日
摘要: 又是套汇为题,初始化d数组为1就可以了,用bellman—ford算法。 1 #include<stdio.h> 2 #include<string.h> 3 4 int n, m, num, u[2000], v[2000]; 5 double w[2000], d[50], ra; 6 char s[50][100], s1[100], s2[100]; 7 8 void solve() 9 {10 for(int i = 0; i <= n; i ++) d[i] = 1;11 for(int k = 0; k < n-1; k ++)12 for(i 阅读全文
posted @ 2012-08-03 15:19 BFP 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 用floyd算法求出任意两点之间的距离,然后从一点出发找到其他点的最大的距离,找从所有点出发到其他点里的最大距离这一集合的最小值,就是所求.#include<stdio.h>#include<string.h>#define MAXN 110int n, m, d[MAXN][MAXN];int main(){ while(scanf("%d",&n)) { if(n == 0) break; memset(d,0x3f,sizeof(d)); for(int i = 1; i <= n; i ++) { ... 阅读全文
posted @ 2012-08-03 13:22 BFP 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 这道题我是用并查集处理的,将所有边排序,当生成树里出现第一个点,第二个点时(或第0点第1个点),结束并查集,输出已处理边里的最大值就可以了。 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<math.h> 4 #define MAXN 210 5 int n,g,h,u[MAXN*MAXN],v[2*MAXN*MAXN],p[MAXN],r[2*MAXN*MAXN]; 6 double x[MAXN],y[MAXN],w[2*MAXN*MAXN],flag[2*MAXN*MAXN]; 7 8 int c 阅读全文
posted @ 2012-08-03 11:23 BFP 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 弄了好长时间,终于找到错误了,原来地位可以为0,另外建立的可能是非连通的图,切记。#include<stdio.h>#include<string.h>#define INF 10000000#define MAXN 110int m,n,N,mi,ans,p[MAXN],rank[MAXN],w[MAXN][MAXN], d[MAXN], vis[MAXN];void solve(int u, int v){ memset(vis, 0, sizeof(vis)); ans = INF; for(int i = 0; i <= n; i ++) d[i] = I 阅读全文
posted @ 2012-08-03 09:33 BFP 阅读(166) 评论(0) 推荐(0) 编辑
  2012年8月2日
摘要: 和poj 1860差不多都用bellman—ford最简单的版本就可以了,关键在于巧妙的运用,做过了才能更好地理解》#include<stdio.h>#include<queue>#include<string.h>#define INF 100000000#define MAXN1 520#define MAXN 8000int u[MAXN],v[MAXN],wt[MAXN], d[MAXN1];int n, m, w, T,p;void init(){ scanf("%d%d%d",&n,&m,&w); p 阅读全文
posted @ 2012-08-02 16:02 BFP 阅读(147) 评论(0) 推荐(0) 编辑
  2012年7月30日
摘要: 注意用long long就可以了#include<stdio.h>#include<string.h>#define INF 0x7fffffffchar s[210];int n;long long f[210];void solve(){ memset(f,0,sizeof(f)); int len = strlen(s); for(int i = 0; i < len; i ++) { if(s[i] == '0') { if(f[i] > f[i+1]) f[i+1] = f[i];... 阅读全文
posted @ 2012-07-30 10:43 BFP 阅读(290) 评论(0) 推荐(0) 编辑
  2012年7月29日
摘要: 题不是很难,但不知道怎么。。。请教下面两个代码有什么不同吗?为什么一个可以A,一个却是WA。AC:#include<stdio.h>#include<string.h>#define MAXD 70000int N, P, Q, s[MAXD], r[MAXD];void solve(){ int i, j, p, q, top, mid, max, min; scanf("%d%d%d", &N, &P, &Q); memset(r, 0, sizeof(r)); for(i = 1; i <= P+1; i ++) 阅读全文
posted @ 2012-07-29 22:00 BFP 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 尽管很容易,还是贴出来吧。#include<stdio.h>#include<string.h>int n, f[1000][1000], len;char s[1010];void solve(){ memset(f,0,sizeof(f)); for(int i = 0; i < len; i ++) f[i][i] = 1; for(int k = 1; k < len; k ++) { for(int i = 0; i+k < len; i ++) { if(s[i] == s[i+k]) f[i][i+... 阅读全文
posted @ 2012-07-29 19:47 BFP 阅读(180) 评论(0) 推荐(0) 编辑
  2012年7月21日
摘要: 这道题隔了一个才做,动归有些生疏了,但从新捡起来发现比以前理解的更透彻了。f[i]表示托i个乌龟时的最轻重量,不断的去更新重量使其最小。这里要先做好预处理, 也就是为最长子序列拍好序。但是按照什么顺序排序呢?这里要用到一点贪心,我们想如果现在有两个乌龟,一个力气大一个力气小,重力我们不用管,那么应该把力气大的乌龟放在下面,还是力气小的呢,你可能会想,这和重力有关啊,仔细分析,如果力量大的在下面,力量小的在上面,那么力量大的还能承受的重力就是s[da]-w[xiao]-w[da],力量小的能够承受的重力为s[xiao],前者可能大于,等于,或小于后者;如果力量小的在下面,力量大的在上面,那么力量 阅读全文
posted @ 2012-07-21 15:42 BFP 阅读(246) 评论(0) 推荐(0) 编辑
  2012年7月16日
摘要: 很久没有做题了,慢慢熟悉起来吧!ACM不可间断,唉唉唉唉有三个无刻度标志的水杯,分别可装 a ,b , c升水,并且a>b , a>c , a,b,c,均为正整数。任意两个水杯之间可以相互倒水。用杯子x给y倒水的时必须一直持续到把杯子y倒满或者把杯子x倒空,而不能中途停止。倒水过程中水量不变。最初的时候只有大杯子装满水,其他两个杯子为空。问能不能量出x升水,如果可以,最少需要多少步?#include<stdio.h>#include<string.h>#define MAXN 4000int a, b, c, x;char v[1010][1010];typ 阅读全文
posted @ 2012-07-16 18:33 BFP 阅读(504) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 11 下一页