摘要: 经典稳定婚姻问题“稳定婚姻问题(The Stable Marriage Problem)”大致说的就是100个GG和100个MM按照自己的喜欢程度给所有异性打分排序。每个帅哥都凭自己好恶给每个MM打分:我最爱a,其次爱b,再次爱c...每个帅哥打的分不同,你最爱的可能是我最讨厌的我最爱的可能是他不甚喜欢的。同样,每个美女也同样给每个帅哥打分。现在需要给他们搭配出100对新郎新娘,并且要保证所得到是稳定婚姻的搭配。那么,什么是不稳定的婚姻呢?所谓不稳婚姻是说, 比如说有两对夫妇(M1、F1)和(M2、F2),M1的老婆是F1,但他更爱F2;而F2的老公虽说是M2,但她更爱M1——这样的婚姻就是不 阅读全文
posted @ 2012-07-12 12:59 willzhang 阅读(556) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int num[10008];//n个人的编号int copy[10008];int n,k,m;int f(int n){ if(n==1) { return 0; } return (f(n-1)+k)%n;}int main(){ while(scanf("%d %d %d",&n,&k,&m),n||k||m) { int i; for(i=0;i<n;i++) { num[i]=i+1; cop 阅读全文
posted @ 2012-07-12 08:56 willzhang 阅读(133) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int a[100008];int b[100008];void out(int m,int n){ int i; for(i=m;i<n;i++) { printf("%d ",i+1); } printf("%d\n",n+1);}int main(){ int c,n; while(scanf("%d %d",&c,&n),c||n) { int i; for(i=0 阅读全文
posted @ 2012-07-12 08:55 willzhang 阅读(84) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int a[10008];//置换前的序列int b[10008];//置换后的序列bool flag[10008];struct T{ int first;//每个循环的起始位置 int length;//每个循环的长度 int min;//每个循环的最小值 int sum;//每个循环的总和};int hash[100008];int data[10008];T point[10008];int cmp(const void *a,const voi 阅读全文
posted @ 2012-07-12 08:55 willzhang 阅读(117) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>struct T{ int er[200]; int num;};//n转换为二进制后的表示用数组存起来T change(int n){ T linshi; linshi.num=0; while(n!=0) { if(n%2==1) { linshi.er[linshi.num]=1; linshi.num++; n=(n-1)/2; } if(n%2==0) { linshi.er[linshi.num]=0; linshi.num++; n=n/2 阅读全文
posted @ 2012-07-12 08:54 willzhang 阅读(198) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<stdlib.h>#include<string.h>__int64 poww(__int64 a,__int64 b);__int64 l,u;__int64 np;#define MAX 70000__int64 p[MAX];bool isprime[MAX];void init(){ np=0; __int64 i,j; for(i=2;i<MAX;i++) { if(isprime[i]) { p[np++]=i; } for(j=0;j<np&&i*p[j]<M 阅读全文
posted @ 2012-07-12 08:53 willzhang 阅读(178) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>__int64 oula(__int64 n){ __int64 i; __int64 res=n; for(i=2;i<=n;i++) { if(n%i==0) { res=res*(i-1)/i; } while(n%i==0) { n/=i; } } return res;}int main(){ __int64 n; while(scanf("%I64d",&n),n) { printf("%I64d\ 阅读全文
posted @ 2012-07-12 08:52 willzhang 阅读(82) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int gcd(int a,int b){ if(b==0) { return a; } return gcd(b,a%b);}int poww(int a,int b){ int res=1; int i; for(i=0;i<b;i++) { res*=a; } return res;}int main(){ int c,l; while(scanf("%d %d",&c,&l),c||l) { int re 阅读全文
posted @ 2012-07-12 08:52 willzhang 阅读(111) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int a[10009];int b[10009];void ans(int m,int n){ int i; printf("%d\n",n-m+1); for(i=m;i<=n;i++) { printf("%d\n",a[i]); } //printf("\n\n");//}int main(){ int sum=0; int n; scanf("%d",& 阅读全文
posted @ 2012-07-12 08:51 willzhang 阅读(105) 评论(0) 推荐(0) 编辑
摘要: #include<string.h>#include<stdio.h>#include<stdlib.h>#include<math.h>int x,y;int exgcd(int a,int b){ int t,gcd; if(b==0) { x=1; y=0; return a; } gcd=exgcd(b,a%b); t=x; x=y; y=t-a/b*y; return gcd;}int main(){ int a,b,c; bool flag; int ii; while(scanf("%d %d %d",& 阅读全文
posted @ 2012-07-12 08:50 willzhang 阅读(203) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>__int64 x,y;__int64 exgcd(__int64 a,__int64 b){ __int64 t,gcd; if(b==0) { x=1; y=0; return a; } gcd=exgcd(b,a%b); t=x; x=y; y=t-a/b*y; return gcd;}__int64 po(__int64 d){ __int64 res=1; __int64 i; for(i=0;i&l 阅读全文
posted @ 2012-07-12 08:49 willzhang 阅读(77) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 10000//调试时用100,提交时改成5000int p[10000];bool isprime[10000];void init(){ //memset(p,0,sizeof(p)); memset(isprime,true,sizeof(isprime)); int i,j; int np=0; for(i=2;i<MAX;i++) { if(isprime[i]) { p[np++]=i; } for(j=0;j&l 阅读全文
posted @ 2012-07-12 08:49 willzhang 阅读(214) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int p[1020][1020];int k;int n,s;bool charge(){ int i; for(i=1;i<=n;i++) { if(p[0][i]!=p[k-1][i]) { return true; } } return false;}int main(){ scanf("%d %d",&n,&s); int i,j; for(i=1;i<=n;i++) { scanf(" 阅读全文
posted @ 2012-07-12 08:48 willzhang 阅读(120) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(){ int num[20]; int k=0; int i,j; while(1) { scanf("%d",&num[0]); if(num[0]==-1) { break; } i=1; while(1) { scanf("%d",&num[i]); if(num[i]==0) { break; } i++; }//num[0],n 阅读全文
posted @ 2012-07-12 08:47 willzhang 阅读(123) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>int dir[5][2]={{0,0},{0,1},{0,-1},{1,0},{-1,0}};int map[5][6];int A[30][31];#define in(x,y) (x>=0&&x<5&&y>=0&&y<6) void change(int a[31],int b[31]){ int c[31]; int i; for(i=0;i<31;i++) { c[i 阅读全文
posted @ 2012-07-12 08:45 willzhang 阅读(248) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#define MAX 1000000struct T{ __int64 prime; __int64 num;};T res[MAX];__int64 p[MAX];bool isprime[MAX];__int64 pow(__int64 a,__int64 b){ __int64 i; __int64 res=1; for(i=1;i<=b;i++) { res*=a; } return res;}void cal(__int64 n){ _ 阅读全文
posted @ 2012-07-12 08:45 willzhang 阅读(165) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>__int64 x,y;__int64 extended_gcd(__int64 a,__int64 b){ __int64 t,gcd; if(b==0) { x=1; y=0; return a; } gcd=extended_gcd(b,a%b); t=x; x=y; y=t-a/b*y; return gcd;}int main(){ __int64 p,q,m,n,l; scanf("%I6 阅读全文
posted @ 2012-07-12 08:44 willzhang 阅读(102) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int x,y;int extended_gcd(int a,int b){ int t,gcd; if(b==0) { x=1; y=0; return a; } gcd=extended_gcd(b,a%b); t=x; x=y; y=t-a/b*y; return gcd;}int main(){ int a[3],d; int i; int m[3]={23,28,33}; int M; int w; 阅读全文
posted @ 2012-07-12 08:43 willzhang 阅读(191) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(){ double a[12]; int i,j; double sum=0; for(i=0;i<12;i++){ scanf("%lf",&a[i]); sum+=a[i]; } sum=sum/12; printf("$%.2f\n",sum); //system("PAUSE"); return 0;}纯水T_T 阅读全文
posted @ 2012-07-12 08:41 willzhang 阅读(84) 评论(0) 推荐(0) 编辑