USACO第一单元全部参考代码

来源:互联网 发布:java云计算框架 编辑:程序博客网 时间:2024/06/06 09:47

1.11

#include<stdio.h>int main(){freopen("ride.in","r",stdin);freopen("ride.out","w",stdout);char a[7],b[7];                      long i,ca=1,cb=1;                   scanf ("%s %s",a,b);    for (i=0;a[i];i++)        ca*=a[i]-64;    for (i=0;b[i];i++)        cb*=b[i]-64;    if(ca%47==cb%47)printf("GO\n");    else printf("STAY\n");}


1.12

/*ID:liaoxg72LANG:C++TASK:gift1 */#include<stdio.h>#include<string.h>int main(){    int n,i,come[11],putn,shouru[11],j,k,d;    char np[11][20],temp[20];    freopen("gift1.in","r",stdin);    freopen("gift1.out","w",stdout);    memset(shouru,0,sizeof(shouru));    memset(come,0,sizeof(come));    scanf("%d",&n);    for(i=0;i<n;i++){          scanf("%s",np[i]);                     }    for(i=0;i<n;i++){          scanf("%s",temp);          for(k=0;k<n;k++){              if(strcmp(np[k],temp)==0){                 scanf("%d",&come[k]);                 scanf("%d",&putn);                 for(d=0;d<putn;d++){                   scanf("%s",temp);                    for(j=0;j<n;j++){                        if(strcmp(np[j],temp)==0){                            shouru[j]+=come[k]/putn;                            come[k]-=come[k]%putn;                            break;                                            }                        else{                              continue;                        }                    }                                     }                 break;                            }                       }                  }    for(i=0;i<n;i++){                     printf("%s ",np[i]);                     printf("%d\n",shouru[i]-come[i]);    }    return 0;    }


1.13

/*ID:liaoxg72LANG:C++TASK:friday*/#include<stdio.h>using namespace std;int main(){  int i=0,j=0,k=0,date[8]={0},n=0,day=0,point=0,x=1,y=0;   freopen("friday.in","r",stdin);   freopen("friday.out","w",stdout);   scanf("%d",&n);   point=0;   for(i=1;i<=n;i++)   {  day=365;      if( (1900+i-1)%100==0 && (1900+i-1)%400 ==0) {day=366;}      else      { if((1900+i-1)%100!=0 && (1900+i-1)%4==0) {day=366;}      }      //printf("%d %d  ",1900+i-1,day);      x=1;y=0;      for(j=1;j<=day;j++)      {  y++;point++;         if(point==8 ) {point=1;}         if( x==4 || x==6 || x==9 || x==11 )         {  if( y==31 ) {y=1;x++;}         }         if( x==1 || x==3 || x==5 || x==7 || x==8 || x==10 || x==12)         {  if( y==32 ) {y=1;x++;}         }         if( x==2 && y==29+day-365 ) {y=1;x++;}         if( x==13 ) {x=1;}         if( y==13 ) {date[point]++;}              }  }    printf("%d %d",date[6],date[7]);   for(i=1;i<=5;i++)   {  printf(" %d",date[i]);   }      //getch();   printf("\n");   return 0;}


1.14

/*ID:liaoxg72LANG:C++TASK:beads*/#include<stdio.h>using namespace std;char zhuzi[1200];int i,j,k,m,n,s=2;int main(){freopen("beads.in","r",stdin);    freopen("beads.out","w",stdout);scanf("%d\n",&n);for(i=400;i<400+n;i++){scanf("%c",&zhuzi[i]);zhuzi[i+n]=zhuzi[i];zhuzi[i-n]=zhuzi[i];}for(i=400;i<400+n;i++){j=1;k=1;while((zhuzi[i-1]==zhuzi[i-1-j]||zhuzi[i-j-1]=='w'||zhuzi[i-1]=='w')&&j<=n-2){if(zhuzi[i-1]=='w')zhuzi[i-1]=zhuzi[i-1-j];j++; }while((zhuzi[i]==zhuzi[i+k]||zhuzi[i+k]=='w'||zhuzi[i]=='w')&&j+k<=n-1){if(zhuzi[i]=='w')zhuzi[i]=zhuzi[i+k];k++;}if(s<j+k)s=j+k;}printf("%d\n",s);//system("pause");return 0;}


1.21

/*ID:liaoxg72LANG:C++TASK:milk2*/#include<stdio.h>#include<stdlib.h>#include<memory.h>int main(){    int n,i,a,b,j,x=1000000,y=0,arr[2]={0,0};    char ar[1000000];    freopen("milk2.in","r",stdin);    freopen("milk2.out","w",stdout);    memset(ar,0,sizeof ar);    scanf("%d",&n);    for (i=0;i<n;++i){        scanf("%d%d",&a,&b);        --b;        if (a<x) x=a;        if (b>y) y=b;        for (j=a;j<=b;++j) ar[j]=1;    }    for (i=x;i<y;i+=j){        for (j=0;ar[i+j]==ar[i];++j);        if (j>arr[ar[i]]) arr[ar[i]]=j;    }    printf("%d %d\n",arr[1],arr[0]);    //system("pause");    return 0;}


1.22

/*ID:liaoxg72LANG:C++TASK:transform*/#include<stdio.h>#include<string.h>#define MAXN 11char from[MAXN][MAXN],to[MAXN][MAXN];int n;bool tr(char a[][MAXN],int option){int ax,ay,bx,by;bool flag=true;switch(option){case 0:for(ax=0;flag&&ax<n;++ax)               for(ay=0;flag&&ay<n;++ay)               if(a[ax][ay]!=to[ax][ay])flag=false;break;case 1:for(ay=0,bx=0;flag && ay<n && bx<n;++ay,++bx)for(ax=n-1,by=0;flag && ax>=0 && by<n;--ax,++by)if(a[ax][ay]!=to[bx][by])flag=false;break;case 2:for(ax=n-1,bx=0;flag && ax>=0 && bx<n;--ax,++bx)for(ay=n-1,by=0;flag && ay>=0 && by<n;--ay,++by)if(a[ax][ay]!=to[bx][by])flag=false;break;case 3:for(ay=0,bx=0;flag && ay < n && bx < n;++ay,++bx)for(ax=n-1,by=0;flag && ax >= 0 && by < n;--ax,++by)if(a[ax][ay] != to[bx][by])flag=false;break;} return flag;}  int main(){freopen("transform.in","r",stdin);freopen("transform.out","w",stdout); int i,j;scanf("%d",&n);for(i=0;i < n;++i)scanf("%s",from[i]);for(i=0;i < n;++i)scanf("%s",to[i]); char tmp[MAXN][MAXN];int ans=0; for(i=0;i<n;++i)for(j=0;j<n;++j)tmp[i][j]=from[i][n-j-1]; for(i=1;i<=3;++i)if(tr(from,i)){ans=i;break;}if(ans==0 && tr(tmp,0))ans=4;for(i=1;ans==0 && i<=3;++i)if(tr(tmp,i)){ans=5;break;}if(ans==0 && tr(from,0))ans=6;if(ans==0)ans=7;printf("%d\n",ans);return 0;}


1.23

/*ID:liaoxg72LANG:C++TASK:namenum*/#include<stdio.h>#include<string.h>#include<stdlib.h>static const int MAX=5000;static const int LEN=12+2;static const int NUM=4617;static const int CMAX=3;char dict[MAX][LEN];char* t[10];char numname[LEN];char tmp[LEN];int len=0;bool found=false;void init(){FILE* f=fopen("namenumdict.txt","r");int i;for(i=0;i!=NUM;i++)fscanf(f,"%s",&dict[i][0]);t[2]="ABC";t[3]="DEF";t[4]="GHI";t[5]="JKL";t[6]="MNO";t[7]="PRS";t[8]="TUV";t[9]="WXY";}int compare(const void* a,const void* b){char* ca=(char*)a;char* cb=(char*)b;return strcmp(ca,cb);}void search(int deep){if(deep==len){tmp[len]='\0';if(bsearch(&tmp,dict,NUM,sizeof(char)*LEN,compare)){printf("%s\n",tmp);if(!found)found=true;}return;}else{int i;for(i=0;i!=CMAX;i++){tmp[deep]=t[numname[deep]-'0'][i];search(deep+1);}}}int main(){init();scanf("%s",numname);len=strlen(numname);search(0);if(!found)printf("NONE\n");return 0;}


1.24

/*ID:liaoxg72LANG:C++TASK:palsquare*/#include <stdio.h>int B;int x[20],l,y[20],L; void Change(int n){    int m;    m=n, l=0; while(m) x[++l]=m%B, m/=B;    m=n*n, L=0; while(m) y[++L]=m%B, m/=B;}int pd(){    int i,j;    for(i=1,j=L;i<=j;++i,--j)       if(y[i]!=y[j]) return 0;    return 1;}int main(){    freopen("palsquare.in","r",stdin);    freopen("palsquare.out","w",stdout);    int i,j;    char c[20]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'};    scanf("%d",&B);    for(i=1;i<=300;++i){       Change(i);       if(pd()){          for(j=l;j>=1;--j) printf("%c",c[x[j]]); printf(" ");          for(j=L;j>=1;--j) printf("%c",c[y[j]]); printf("\n");       }    }    return 0;}


1.25

/*ID:liaoxg72LANG:C++TASK:dualpal*/#include<stdio.h>#include<string.h>using namespace std;int dfs(int a[101],int n,int s){int count=0;while(s!=0){a[count++]=s%n;s/=n;}count--;int i,j;for(i=0,j=count;i<=count;i++,j--){if(a[i]!=a[j])return 0;}return 1;}int main(){freopen("dualpal.in","r",stdin);freopen("dualpal.out","w",stdout);int n,s;scanf("%d%d",&n,&s);int a[101];memset(a,0,sizeof(a));int i,j;int count=0;int temp;for(i=s+1;;++i){temp=i;int count1=0;int flag=0;for(j=2;j<=10;++j){count1+=dfs(a,j,temp);temp=i;}if(count1>=2){printf("%d\n",i);count++;}if(count==n)break;}return 0;}


1.31

/*ID:liaoxg72LANG:C++TASK:milk*/#include<stdio.h>struct node{       int pr;       int num;       }a[5010];int main(){    freopen("milk.in","r",stdin);    freopen("milk.out","w",stdout);    int i,j,k,l,m,n,cost=0,milk=0,tmp,tnp;    scanf("%d%d",&m,&n);    if(m==0||n==0){       printf("0\n");return 0;    }    for(i=1;i<=n;i++)         scanf("%d%d",&a[i].pr,&a[i].num);    for(i=1;i<n;i++)        for(j=i+1;j<=n;j++)        if(a[i].pr>a[j].pr){           tmp=a[i].pr;a[i].pr=a[j].pr;a[j].pr=tmp;           tnp=a[i].num;a[i].num=a[j].num;a[j].num=tnp;        }       for(i=1;i<=n;i++){        k=a[i].pr;l=a[i].num;j=milk+l;        if(j>m){           cost+=(m-milk)*k;           break;        }        milk+=l;cost+=k*l;    }    printf("%d",cost);    printf("\n");    return 0;}


1.32

/*ID:liaoxg72LANG:C++TASK:barn1*/#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAX 201int cmp(const void *a,const void *b){return *(int *)a-*(int *)b;}int main(){freopen("barn1.in","r",stdin);freopen("barn1.out","w",stdout);int m,s,c;scanf("%d%d%d",&m,&s,&c);int a[MAX],b[MAX];int temp=s;memset(a,0,sizeof(a));memset(b,0,sizeof(b));int i;for(i=0;i<c;++i){scanf("%d",&a[i]);}qsort(a,c,sizeof(int),cmp);int j=0;s=s-(a[0]-1);for(i=1;i<c;++i){b[j++]=a[i]-a[i-1]-1;}s=s-(temp-a[c-1]);j--;qsort(b,j+1,sizeof(int),cmp);if(m>=c){printf("%d\n",c);return 0;}for(i=j;i>=j-m+2;--i){s-=b[i];}printf("%d\n",s);return 0;}


1.33

/*ID:liaoxg72LANG:C++TASK:crypt1*/#include <stdio.h>#include <string.h>int main(){    freopen("crypt1.in","r",stdin);    freopen("crypt1.out","w",stdout);    long i,j,k,l,n,suma,sumb,sumc,num[15],tab,t1,t2;    long a[1050],b[105];    char hash[10005]={0},h3[1005]={0};    scanf("%ld",&n);    for(i=0;i<n;i++)        scanf("%ld",&num[i]);    for(i=0,suma=0;i<n;i++)    for(j=0;j<n;j++)    for(k=0;k<n;k++,suma++)    a[suma]=num[i]*100+num[j]*10+num[k],h3[a[suma]]=1;   //所有可能三位数    for(i=0,sumb=0;i<n;i++)    for(j=0;j<n;j++,sumb++)    b[sumb]=num[i]*10+num[j];    for(i=0;i<n;i++)    for(j=0;j<n;j++)    for(k=0;k<n;k++)    for(l=0;l<n;l++)    hash[num[i]*1000+num[j]*100+num[k]*10+num[l]]=1;    //所有可能四位数    for(i=0,sumc=0;i<suma;i++)    for(j=0;j<sumb;j++){        tab=a[i]*b[j];        if(tab>=1000&&tab<=9999&&hash[tab]==1){     //四位数并且能够由给出的数字构成            t1=(b[j]%10)*a[i],t2=(b[j]/10)*a[i];            if(t1>=100&&t1<=999&&t2>=100&&t2<=999&&h3[t1]==1&&h3[t2]==1)  //三位数并且能够由给出的数字构成            sumc++;        }    }    printf("%ld\n",sumc);    return 0;} 


1.34

/*ID:liaoxg72LANG:C++TASK:wormhole*/#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<cstring>using namespace std; struct Node{int x,y,vis,l;bool operator <(const Node &rhs)const{return x<rhs.x;}}; int n,ans=0,x[20],y[20],x3[20],y3[20],r[20],label[20],cur=0,flag;vector<Node> g[20];bool cmp(int ii,int jj){return y[ii]<y[jj];} void isloop(int y,int x){int lx=x,ly=y;while(lx<g[ly].size()){if(g[ly][lx].vis) {flag=1;return;}g[ly][lx].vis=1;int t1=g[ly][lx].l;lx=x3[label[t1]],ly=y3[label[t1]];lx++; }} bool check(){for(int i=0;i<=cur;i++)for(int j=0;j<g[i].size();j++)g[i][j].vis=0;flag=0;for(int i=0;i<=cur;i++)for(int j=0;j<g[i].size();j++){ for(int n=0;n<=cur;n++)for(int m=0;m<g[n].size();m++)g[n][m].vis=0; isloop(i,j); }if(flag) return true;else return false;} void solve(int c){if(c>n/2){if(check()) ans++;return;}int pos;for(int i=0;i<n;i++) if(label[i]<0){pos=i;break;}for(int i=pos+1;i<n;i++)if(label[i]<0){label[i]=pos;label[pos]=i;solve(c+1);label[i]=-1;}label[pos]=-1;} int main(){freopen("wormhole.in","r",stdin);freopen("wormhole.out","w",stdout);cin>>n;for(int i=0;i<n;i++) cin>>x[i]>>y[i];for(int i=0;i<n;i++) r[i]=i;sort(r,r+n,cmp);g[0].push_back((Node){x[r[0]],y[r[0]],0,r[0]});for(int i=1;i<n;i++){int l1=r[i],l2=r[i-1];if(y[l1]==y[l2]) g[cur].push_back((Node){x[l1],y[l1],0,l1});else g[++cur].push_back((Node){x[l1],y[l1],0,l1});}for(int i=0;i<n;i++) sort(g[i].begin(),g[i].end());for(int i=0;i<=cur;i++)for(int j=0;j<g[i].size();j++){int t1=g[i][j].l;x3[t1]=j;y3[t1]=i;} memset(label,-1,sizeof(label));solve(1);cout<<ans<<endl; return 0;}


1.35

/*ID: wtx97071PROG: skidesignLANG: C++*/#include<stdio.h>using namespace std;int N,i,j;int h[1011];int min(int x,int y){    if(x<y)       return x;    return y;}int main(){    freopen("skidesign.in","r",stdin);    freopen("skidesign.out","w",stdout);    scanf("%d",&N);    for(i=0;i<N;++i)       scanf("%d",&h[i]);    int ans=99999999;    for(i=0;i<100-17+1;++i){        int tans=0;        for(j=0;j<N;++j){            if(h[j]<i)               tans+=(i-h[j])*(i-h[j]);            if(h[j]>i+17)               tans+=(h[j]-i-17)*(h[j]-i-17);        }        ans=min(ans, tans);    }    printf("%d\n",ans);    return 0;}


1.41

/*ID:liaoxg72LANG:C++ TASK:milk3*/#include<stdio.h>int milk[21]={0},a,b,c,vis[21][21]={0,0};int dfs(int i,int j){    int k=c-i-j;    if(i==0) milk[k]=1;    vis[i][j]=1;    if(i<a){           if(j>a-i&&vis[a][j-a+i]==0)            dfs(a,j-a+i);           else if(i+j<a&&vis[i+j][0]==0)            dfs(i+j,0);           if(k>a-i&&vis[a][j]==0)            dfs(a,j);           else if(c-j<a&&vis[c-j][j]==0)           dfs(c-j,j);    }    if(j<b){           if(i>b-j&&vis[i-b+j][b]==0)           dfs(i-b+j,b);           else if(i+j<b&&vis[0][i+j]==0)            dfs(0,i+j);           if(k>b-j&&vis[i][b]==0)            dfs(i,b);           else if(c-i<b&&vis[i][c-i]==0)            dfs(i,c-i);    }    if(k<c){           if(i>c-k&&vis[i-c+k][j]==0)            dfs(i-c+k,j);           else if(vis[0][j]==0)            dfs(0,j);           if(j>c-k&&vis[i][j-c+k]==0)            dfs(i,j-c+k);           else if(vis[i][0]==0)            dfs(i,0);    }}int main(){    int i;    FILE *fp1,*fp2;    freopen("milk3.in","r",stdin);    freopen("milk3.out","w",stdout);    scanf("%d%d%d",&a,&b,&c);    dfs(0,0);    if(c<=b)       printf("0 ");       for(i=1;i<c;i++)           if(milk[i])               printf("%d ",i);    printf("%d\n",c);    return 0;}


1.42

/*ID: liaoxg72 LANG: C++TASK:ariprog */#include<stdio.h>#include<string.h>int vis[130000],s[130000];int main(){    freopen("ariprog.in","r",stdin);    freopen("ariprog.out","w",stdout);    int i,j,num,a,b,sum,m,n;    num=0;    memset(vis,0,sizeof(vis));    scanf("%d%d",&n,&m);    sum=2*m*m;    for(i=0;i<=m;i++)    for(j=0;j<=i;j++)       vis[i*i+j*j]=1;    for(i=0;i<=sum;i++)    if(vis[i]){        num++;        s[num]=i;    }    int e=0;    for(b=1;b*(n-1)<=sum;b++)    for(i=1;i<=num-n+1&&s[i]+(n-1)*b<=sum;i++){        a=s[i];        for(j=n-1;j>=1;j--){            if(!vis[a+j*b])             break;        }        if(!j){            e++;            printf("%d %d\n",a,b);        }    }    if(!e)        printf("NONE\n");    return 0;}


1.51

/*ID:liaoxg72LANG:C++TASK:numtri*/#include<stdio.h>int max(long a,long b){     if(a>b)        return a;     else return b;}int a[1000][1000];int main(){    int i,j,n;    freopen("numtri.in","r",stdin);    freopen("numtri.out","w",stdout);    scanf("%ld",&n);    for(i=0;i<n;i++)       for(j=0;j<=i;j++)           scanf("%ld",&a[i][j]);    for(i=n-2;i>=0;i--)        for(j=0;j<=i;j++)            a[i][j]+=max(a[i+1][j],a[i+1][j+1]);    printf("%d\n",a[0][0]);}


1.52

/*ID:liaoxg72LANG:C++TASK:pprime*/#include <stdio.h>#include <stdlib.h>#include <string.h>int a,b;int isprime(int n){    int i;    if(n==2)return 1;    if(n%2==0)return 0;    for(i=3;i*i<=n;i+=2)if(n%i==0)    return 0;    return 1;} void gen(int i, int isodd){    char buf[30];    char *p, *q;    int n;    sprintf(buf, "%d", i);    p=buf+strlen(buf);    q=p-isodd;    while(q>buf)*p++=*--q;    *p='\0';    n=atol(buf);    if(a<=n&&n<=b&&isprime(n))printf("%d\n",n);} void genoddeven(int lo, int hi){    int i;    for(i=lo;i<=hi; i++)        gen(i,1);    for(i=lo;i<=hi;i++)        gen(i,0);} void generate(){    genoddeven(1,9);    genoddeven(10,99);    genoddeven(100,999);    genoddeven(1000,9999);}int main(){    freopen("pprime.in","r",stdin);    freopen("pprime.out","w",stdout);    scanf("%d%d",&a,&b);    generate();    return 0;}


1.53

/*ID:liaoxg72LANG:C++TASK:sprime*/#include<stdio.h>#include<stdlib.h>#include<math.h>int n;int check(int a){    if(a==1)        return 1;    if(a==2)        return 0;    int i,e;    e=(int)sqrt(a);    for(i=2;i<=e;i++)        if(a%i==0)            return 1;    return 0;}void dfs(int num,int deep){    if(deep>n)        return;    if(check(num)==0)        if(deep==n)            printf("%d\n",num);        else{            dfs(num*10+1,deep+1);            dfs(num*10+3,deep+1);            dfs(num*10+5,deep+1);            dfs(num*10+7,deep+1);            dfs(num*10+9,deep+1);        }    else        return;} int main(){    freopen("sprime.in","r",stdin);    freopen("sprime.out","w",stdout);    scanf("%d",&n);    dfs(1,1);       dfs(2,1);       dfs(3,1);       dfs(4,1);       dfs(5,1);       dfs(6,1);       dfs(7,1);       dfs(8,1);       dfs(9,1);       return 0;}



原创粉丝点击