摘要: #include#include#include#includeint gcd(int m,int n){ return n==0?m: gcd(n,m%n);}int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF) { printf("%d %d\n",gcd(m,n),((m*n)/gcd(m,n))); getchar(); } return 0;} 阅读全文
posted @ 2011-08-09 18:32 bcy 阅读(116) 评论(0) 推荐(0) 编辑
摘要: #include"stdio.h"#define N 13#define M 100005int a[N][M];int b[N][M];int main(){ int i,j; int n; int k; int hl,hm,hr; int max; while(scanf("%d",&n)!=EOF) { if(n==0) return 0; k=0; for(i=0;ihm?hl:hm; max=max>hr?max:hr; a[i][j]=max; } } max=0; for(i=1,j=k;imax) { max=a[i][j] 阅读全文
posted @ 2011-08-09 17:13 bcy 阅读(140) 评论(0) 推荐(0) 编辑
摘要: #include"stdio.h"#include"iostream"#include"algorithm"#include"map"using namespace std;int n,k,M;struct Matrix{ void init() { memset(m,0,sizeof(m)); } Matrix operator *(Matrix t) { Matrix t1; t1.init(); for(int i=0;i<n;++i) for(int j=0;j<n;++j) { for(int 阅读全文
posted @ 2011-08-09 11:34 bcy 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题意:省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。(仍然是最小生成树问题)#include"stdio.h"#include"stdlib.h"struct e{ int x,y,v; }val[10500];int set[105],n,m,sum;int cmp(const void *a,const void *b){ return (( 阅读全文
posted @ 2011-08-08 16:26 bcy 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 本题求的是最小生成树,Kustra(或prim)算法。快排时用qsort,不用冒泡(可能会超时);题意:使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。Kustra算法求解:#include"stdio.h"#include"stdlib.h"int set[105],n,m,sum;struct e{ int x,y,v; }val[10000];int cmp(const void *a,const void *b){ return ((e *)a) 阅读全文
posted @ 2011-08-08 11:28 bcy 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 问题描述如下:“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 城镇数码N,道路数目M;简单的畅通工程,只要套模板就OK 。不过要理解哦。。。(若有N个集合,则最少只需N-1条道路就可以连起来)#include"stdio.h"int set[1024];int find(int i){ return set[i]==i?set[i]:find(set[i]); }void merge(int x,int y){ int a=find(x),b=find(y); set[a]=b; 阅读全文
posted @ 2011-08-05 22:27 bcy 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6540Accepted Submission(s): 2719Problem Description大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。话虽这样说,我还是要告诉大家,要想失败到一定程度也是不容易的。比如,我高中的时候,就有一个神奇的女生,在英语. 阅读全文
posted @ 2011-08-05 21:46 bcy 阅读(133) 评论(0) 推荐(0) 编辑
摘要: #include"iostream"using namespace std;int c1[250010],c2[250010];int value[55];int amount[55];int main(){ int nNum; while(scanf("%d",&nNum)&&nNum>0) { memset(value,0,sizeof(value)); memset(amount,0,sizeof(amount)); int sum=0; for(int i=1;i<=nNum;++i) { scanf(&quo 阅读全文
posted @ 2011-08-05 12:10 bcy 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 输入1分,2分,5分的硬币,输出不能组成的最小总值;#include"iostream"using namespace std;int c1[10000],c2[10000];int num[4];int main(){ int nNum; while(scanf("%d %d %d",&num[1],&num[2],&num[3])&&(num[1]||num[2]||num[3])) { int _max=num[1]*1+num[2]*2+num[3]*5; for(int i=0;i<=_max;++ 阅读全文
posted @ 2011-08-05 10:50 bcy 阅读(216) 评论(0) 推荐(0) 编辑
摘要: Square Coins#include"iostream"using namespace std;int c1[310],c2[310];int main(){ int i,j,k,nNum; while(scanf("%d",&nNum),nNum) { for(i=0;i<=nNum;++i) { c1[i]=1; c2[i]=0; } for(i=2;i*i<=nNum;++i)//注意i和k处有所改动; { for(j=0;j<=nNum;++j) for(k=0;k+j<=nNum;k+=i*i) c2[k+j 阅读全文
posted @ 2011-08-04 22:20 bcy 阅读(199) 评论(0) 推荐(0) 编辑