2011年7月19日
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int prim[65540];void fun(){ for(int i=1;i<=65540;i++) { prim[i]=0; } for(int i=2;i<=65540/2;i++) { for(int j=i+i;j<=65540;j+=i) { prim[j]=1; } }}int main(){ void fun(); int n; while(scanf("%d",&n)!=EOF) { i 阅读全文
posted @ 2011-07-19 20:06 枫叶飘泪 阅读(298) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int prim[65540];void fun(){ for(int i=1;i<=65540;i++) { prim[i]=0; } for(int i=2;i<=65540/2;i++) { for(int j=i+i;j<=65540;j+=i) { prim[j]=1; } }}int main(){ fun(); int n; while(scanf("%d",&n),n) { int f=0; 阅读全文
posted @ 2011-07-19 18:17 枫叶飘泪 阅读(198) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>long long s[500005];void fun(){ for(int i=1;i<500005;i++) { s[i]=1; } for(int i=2;i<500005;i++) { for(int j=2;i*j<500005;j++) { s[i*j]+=i; } }}int main(){ fun(); int t,n; while(scanf("%d",&t)!=EOF) { while( 阅读全文
posted @ 2011-07-19 16:28 枫叶飘泪 阅读(301) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int n,num1,num2; while(scanf("%d",&n)!=EOF) { for(int i=1;i<=n;i++) { int sum; int f=0; scanf("%d%d",&num1,&num2); if(num1>num2) { num1=num1+num2; num2=num1-num2; num1=num1-num2; 阅读全文
posted @ 2011-07-19 15:19 枫叶飘泪 阅读(266) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int n,m;int set[1010];struct val{ int x,y;}e[1010];int find(int x){ return x==set[x] ? x : find(set[x]);}int main(){ int t,x,y; while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d%d",&n,&m); for(in 阅读全文
posted @ 2011-07-19 13:54 枫叶飘泪 阅读(221) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int set[1010];int n,m;struct val{ int x,y;}e[1000000];int find(int a){ return a==set[a] ? a : find(set[a]);}int main(){ int x,y; while(scanf("%d%d",&n,&m),n) { for(int i=1;i<=n;i++) { set[i]=i; } for(int i=1; 阅读全文
posted @ 2011-07-19 13:38 枫叶飘泪 阅读(260) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int set[110],n,m;struct val{ int x,y,v,s;}e[10000];int cmp(const void *a,const void *b){ return ((val *)a)->v-((val *)b)->v;}int find(int x){ return x==set[x] ? x : find(set[x]);}int kruskal(){ int sum=0; int x,y,v,s; for(i 阅读全文
posted @ 2011-07-19 13:07 枫叶飘泪 阅读(217) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int set[110],n,m;struct val{ int a,b,v; }e[10000];int find(int x){ return x==set[x] ? x : find(set[x]); }int kruskal(){ int sum=0; for(int i=1;i<=n;i++) { int a=e[i].a,b=e[i].b,v=e[i].v; int x=find(a),y=find(b); if(x!=y) { set 阅读全文
posted @ 2011-07-19 11:37 枫叶飘泪 阅读(225) 评论(0) 推荐(0) 编辑
  2011年7月18日
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>double dis[1010],map[1010][1010];int hash[1010];int n,a,b;void dijkstra(){ for(int i=1;i<=n;i++) { hash[i]=0; dis[i]=0; }//前面吧这部分内容放到了主函数里面,结果不对。 dis[a]=1; for(int i=1;i<=n;i++) { double max=-1; int pos; for(int j=1;j<=n 阅读全文
posted @ 2011-07-18 21:51 枫叶飘泪 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 这个题目是套用dijstra()模板,但又拐了一个弯,本题每条路径上都有两个权值,本题不必考虑花费,直接球最短路,只是在更新顶点值的时候有一个特殊处理,求得花费。#include<stdio.h>#include<string.h>#include<stdlib.h>int n,m,s,t;int inf=0x7fffffff;int hash[1010],dis[1010],map[1010][1010],pay[1010][1010],des[1010];void dijstra(){ dis[s]=0; des[s]=0; for(int i=1;i& 阅读全文
posted @ 2011-07-18 20:10 枫叶飘泪 阅读(389) 评论(0) 推荐(0) 编辑