posts - 100,  comments - 15,  trackbacks - 0
 
//还是抄的
 1#include<stdio.h>
 2#include<math.h>
 3int main()
 4{
 5    int t,i,x[20],y[20];
 6    char a[3],b[3];
 7
 8    scanf("%d",&t);
 9
10    for(i=0 ; i<t; i++)
11    {
12        scanf("%s%s",&a,&b);
13        x[i]=abs(a[0]-b[0]);
14        y[i]=abs(a[1]-b[1]);
15    }

16    for(i=0;i<t;i++)
17    {
18        if(x[i]==0&&y[i]==0)
19            printf("0 0 0 0\n");
20        else
21        {
22        if(x[i]<y[i])
23            printf("%d ",y[i]);
24        else printf("%d ",x[i]);
25        if(x[i]==0||y[i]==0)
26            printf("%c %c ",'1','1');
27            else 
28                if((x[i]-y[i])==0)
29                    printf("%c %c ",'1','2');
30                else printf("%c %c ",'2','2');
31        if((x[i]-y[i])==0)
32            printf("%c\n",'1');
33        else 
34            if((x[i]-y[i])%2!=0)
35                printf("%s\n","Inf");
36            else  printf("%c\n",'2');
37    }

38    }

39    return 0;
40}

41        
posted @ 2009-04-03 20:09 wyiu 阅读(58) | 评论 (0)编辑 收藏
//忘了,抄的
 1#include<stdio.h>
 2int main(){
 3    int t,i,j;
 4    scanf("%d",&t);
 5    int x[20][5];
 6    for(i=0;i<t;i++){
 7        for(j=0;j<4;j++){
 8            scanf("%d",&x[i][j]);
 9        }

10        if((x[i][1]-x[i][0])==(x[i][2]-x[i][1])&&(x[i][3]-x[i][2])==(x[i][2]-x[i][1]))
11            x[i][4]=x[i][3]+x[i][2]-x[i][1];
12        else x[i][4]=x[i][3]*x[i][2]/x[i][1];            
13    }

14    for(i=0;i<t;i++){
15        for(j=0;j<5;j++){
16            printf("%d ",x[i][j]);
17        }

18        printf("\n");
19    }

20    return 0;
21}

22
23
posted @ 2009-04-03 20:08 wyiu 阅读(39) | 评论 (0)编辑 收藏
//当初很蠢的做法,大家无视吧
 1#include<iostream>
 2using namespace std;
 3int main()
 4{
 5    double a,b=0;
 6    int c,d,e,f;
 7    for(int i=0;i<12;i++)
 8    {
 9        cin>>a;
10        b+=a;
11    }

12    c=int((b/12)*1000);
13    if(c%10>=5) c+=10;
14    d=c/1000;
15    e=(c-d*1000)/100;
16    f=(c-d*1000-e*100)/10;
17    cout<<'$'<<d<<'.'<<e<<f<<endl;
18    return 0;
19}

20

posted @ 2009-04-03 20:06 wyiu 阅读(71) | 评论 (0)编辑 收藏
//挺无聊的题,不过不知道为什么不是0MS过
 1#include<iostream>
 2using namespace std;
 3int main()
 4{
 5    int i;
 6    double n,t=0.0;
 7    cin>>n;
 8    while(n!=0.0)
 9    {
10        i=2;
11        while(t<n)
12        {
13            t+=1.0/i;
14            i++;
15        }

16        cout<<i-2<<' '<<"card(s)"<<endl;
17        t=0;
18        cin>>n;
19    }

20    return 0;
21}
posted @ 2009-04-03 20:02 wyiu 阅读(130) | 评论 (0)编辑 收藏
//普通做法
 1#include <iostream>
 2#include <math.h>
 3using namespace std ;
 4int prime( int x )
 5
 6    int i;
 7    for(i=2;i <=int(sqrt(double(x)));i++)
 8      if(x%i==0return 0;
 9      return 1;
10}

11
12int main()
13{
14    int i,num,n;
15    while( cin>>n )
16    {   
17        num =0 ;
18        if( n==0 ) return 0;
19        for( i=2; i<= n/2; i++)
20            if( prime(i) && prime(n-i) )
21                num++;
22        cout<<num<<endl ; 
23    }

24    return 0 ;
25}
posted @ 2009-04-03 19:59 wyiu 阅读(65) | 评论 (0)编辑 收藏
//先推出关系式,然后就是很简单的东西啦
 1#include<iostream>
 2using namespace std;
 3int main()
 4{
 5    int n;
 6    double a,b,a1;
 7    scanf("%d%lf%lf",&n,&a,&b);
 8    double c,sumc=0.0;
 9    int i,j=n;
10    for(i=0;i<n;i++)
11    {
12        scanf("%lf",&c);
13        sumc+=2*(j--)*c;
14    }

15    a1=(b-sumc+n*a)/(n+1);
16    printf("%.2lf\n",a1);
17    return 0;
18}

19
20
posted @ 2009-04-03 19:54 wyiu 阅读(64) | 评论 (0)编辑 收藏
//两点式,取两点,然后其它点带入直线公式验证
 1#include<iostream>
 2using namespace std;
 3int main()
 4{
 5    int x[200];
 6    int y[200];
 7    int n;
 8    cin>>n;
 9    int max=2,count;
10    int i,j,k;
11    for(i=0;i<n;i++)    
12        cin>>x[i]>>y[i];
13    for(i=0;i<n;i++)
14    {
15        
16        for(j=i+1;j<n;j++)
17        {
18            count=2;
19            for(k=0;k<&& k!=&& k!=j; k++)
20                if((y[k]-y[i])*(x[i]-x[j])==(y[i]-y[j])*(x[k]-x[i])) //两点式
21                    count++;
22
23            if(count>max) 
24                max=count;
25        }

26            
27    }

28    cout<<max;
29    return 0;
30}

31
32
posted @ 2009-04-03 19:51 wyiu 阅读(89) | 评论 (0)编辑 收藏
//直接用Prim
  1#include<iostream>
  2using namespace std;
  3struct Edge
  4{
  5    int u;
  6    int v;
  7    int weight;
  8}
;
  9struct GraphMatrix
 10{
 11    int adj[27][27];
 12}
;
 13
 14void Prim(GraphMatrix & GM,Edge MST[],int n);
 15
 16int main()
 17{
 18    int i,j;
 19    Edge MST[27];
 20    GraphMatrix GM;
 21    
 22    int n,m,w;
 23    char u,v;
 24
 25    while(cin>>&& n!=0)
 26    {
 27        for(i=0;i<n;i++)
 28            for(j=0;j<n;j++)
 29            {
 30                if(i==j) GM.adj[i][j]=0;
 31                else GM.adj[i][j]=100;
 32            }

 33            
 34        for(i=0;i<n-1;i++)
 35        {
 36            cin>>u>>m;
 37
 38            for(j=0;j<m;j++)
 39            {
 40                cin>>v>>w;
 41                GM.adj[i][v-u+i]=w;
 42                GM.adj[v-u+i][i]=w;
 43            }
 
 44        }

 45            
 46        Prim(GM,MST,n);
 47        int minw=0;
 48        for(i=0;i<n-1;i++)
 49            minw+=MST[i].weight;
 50        cout<<minw<<endl;
 51    }

 52    return 0;
 53}

 54
 55void Prim(GraphMatrix & GM,Edge MST[],int n)
 56{
 57    int i,j,k;
 58    int si,mi,ni,res;
 59    si=0;
 60    for(i=0;i<n-1;i++)
 61    {
 62        MST[i].u=si;
 63        MST[i].v=i+1;
 64        MST[i].weight=GM.adj[si][i+1];
 65    }

 66    
 67
 68    for(i=0;i<n-1;i++)
 69    {
 70        //mi=FindMinEdge(MST,si);
 71        mi=si;
 72        res=100;
 73        for(j=si;j<n-1;j++)
 74        {
 75            if(MST[j].weight>0 && MST[j].weight<res)
 76            {
 77                res=MST[j].weight;
 78                mi=j;
 79            }

 80        }

 81        //swap
 82        Edge tmp;
 83        tmp=MST[mi];
 84        MST[mi]=MST[si];
 85        MST[si]=tmp;
 86        //si++
 87        si++;
 88        //adjust 
 89        ni=MST[si-1].v;
 90        for(j=si;j<n-1;j++)
 91        {
 92            k=MST[j].v;
 93            if(GM.adj[ni][k]>0 && GM.adj[ni][k]<MST[j].weight)
 94            {
 95                MST[j].weight=GM.adj[ni][k];
 96                MST[j].u=ni;
 97            }

 98        }

 99        
100    }

101}

102
103
posted @ 2009-04-03 19:45 wyiu 阅读(155) | 评论 (0)编辑 收藏

//第一次用kruskal


  1#include<iostream>
  2#include<stdlib.h>
  3#define MAX 100
  4using namespace std;
  5
  6struct Edge
  7{
  8    int u;
  9    int v;
 10    int w;
 11}
;
 12
 13int parent[MAX];   //全局,感觉不太好
 14
 15int cmp(const void *a, const void *b)
 16{
 17    return (*(Edge*)a).w-(*(Edge*)b).w;
 18}

 19
 20int find(int vertex)
 21{
 22    if( parent[vertex]<0 ) 
 23        return vertex;
 24    else 
 25        return find(parent[vertex]);  
 26}

 27
 28void Union(int u,int v)
 29{
 30    int pu=find(u),        //parent of u 
 31        pv=find(v),        //parent of v
 32        tmp;
 33    if (pu != pv)
 34    {
 35        tmp = parent[pu] + parent[pv];        //加权合并
 36        if (parent[pu] > parent[pv])        //较小的树连接到较大的树后
 37        {
 38            parent[pu] = pv;
 39            parent[pv] = tmp;
 40        }
 
 41         else 
 42           {
 43            parent[pv] = pu;
 44            parent[pu] = tmp;
 45        }
 
 46    }
 
 47}

 48
 49int kruskal(Edge edge[],Edge mst[],int en,int vn)
 50{
 51    int i,j,k;
 52    j=0;k=0;
 53    for(i=0; i<en; i++)
 54    {
 55        if( find(edge[i].u) != find(edge[i].v) ) //不属于同一棵树
 56        {
 57            mst[j].u=edge[i].u;
 58            mst[j].v=edge[i].v;
 59            mst[j].w=edge[i].w;
 60            j++;
 61            k+=edge[i].w;
 62            Union(edge[i].u, edge[i].v);
 63        }

 64        if(j== vn-1break;
 65    }

 66    return k;
 67}

 68
 69int main()
 70{
 71    int vn,i,j,en=0,sum=0;
 72    int grap[MAX][MAX];
 73
 74    Edge edge[MAX * MAX];
 75    Edge mst [MAX];
 76
 77    while(scanf("%d",&vn)==1)
 78    {
 79        en=0;
 80        sum=0;
 81        memset(parent,-1,sizeof(parent));  //makeset
 82
 83        for(i=0;i<vn;i++)
 84            for(j=0;j<vn;j++)
 85                scanf("%d",&grap[i][j]);
 86
 87        for(i=0;i<vn;i++)
 88            for(j=0;j<vn;j++)
 89                if(i<j) { edge[en].u=i;edge[en].v=j; edge[en].w=grap[i][j]; en++; }
 90
 91        qsort(edge,en,sizeof(edge[0]),cmp);
 92
 93        kruskal(edge,mst,en,vn);
 94
 95        for(i=0;i<vn-1;i++)    
 96            sum+=mst[i].w;
 97        cout<<sum<<endl;
 98    }

 99
100    return 0;
101}

102
posted @ 2009-04-03 01:42 wyiu 阅读(221) | 评论 (0)编辑 收藏
 1#include<iostream>
 2#include<stdlib.h>
 3using namespace std;
 4int cmp(const void *a, const void *b)
 5{
 6     return(*(int *)a-*(int *)b);
 7}

 8int main()
 9{
10    int n, i,j,t2,flag=0;
11    char t1[300];        
12    cin>>n;
13    int *rec=new int[n];
14    for(i=0;i<n;i++)
15    {
16        scanf("%s",&t1);
17        t2=0;
18        for(j=0; t1[j]!=0 ;j++)
19        {
20            
21            switch(t1[j])
22            {
23            case '0': t2=t2*10+0;break;
24            case '1': t2=t2*10+1;break;
25            case '2'case 'A'case 'B'case 'C':
26                t2=t2*10+2;break;
27            case '3'case 'D'case 'E'case 'F':
28                t2=t2*10+3;break;
29            case '4'case 'G'case 'H'case 'I':
30                t2=t2*10+4;break;
31            case '5'case 'J'case 'K'case 'L':
32                t2=t2*10+5;break;
33            case '6'case 'M'case 'N'case 'O':
34                t2=t2*10+6;break;
35            case '7'case 'P'case 'R'case 'S':
36                t2=t2*10+7;break;
37            case '8'case 'T'case 'U'case 'V':
38                t2=t2*10+8;break;
39            case '9'case 'W'case 'X'case 'Y':
40                t2=t2*10+9;break;
41            }

42
43        }

44        rec[i]=t2;
45    }

46    qsort(rec,n,sizeof(rec[0]),cmp);
47    for(i=0;i<n;)
48    {        
49        int temp=rec[i];
50        int rn=1;
51        for(j=i+1;j<n;j++)
52        {
53            i=j;
54            if(temp==rec[j])
55                rn++;
56            else 
57                break;
58        }
        
59        if(rn>=2)
60        {
61            printf("%03d-%04d %d\n",temp/10000,temp%10000,rn);
62            flag=1;
63        }

64
65            if(j>=n) i++;
66    }

67    if(flag==0) cout<<"No duplicates.\n";
68    return 0;
69}

70

posted @ 2009-04-03 01:06 wyiu 阅读(117) | 评论 (0)编辑 收藏
仅列出标题
共10页: First 2 3 4 5 6 7 8 9 10