USACO Section 1.2

来源:互联网 发布:mac ssh 端口号 编辑:程序博客网 时间:2024/06/06 09:53

       题目倒是不怎么滴难,就是英语难念,怎么做还是做不动似的。要崩溃了,坚持!!

milk2:   先把区间排序,然后把有相交的区间合并。一个for结束就好了。

代码:

/*ID: duanjia2PROG: milk2LANG: C++*/#include<iostream>#include<algorithm>#include<fstream>using namespace std;struct inter{       int s,t;} val[10005];bool cmp(inter b,inter c){     return (b.s<c.s||b.s==c.s&&b.t<c.t);}int main(){    ifstream fin("milk2.in");    ofstream fout("milk2.out");    int i,n,s,t,r,r1,r2;    fin>>n;    for( i=0;i<n;i++)         fin>>val[i].s>>val[i].t;    if(n==1)  fout<<val[0].t-val[0].s<<' '<<0<<endl;    else{               sort(val,val+n,cmp);            r1=0, r=0, r2=0;            r=val[0].t-val[0].s;            for( i=1;i<n;i++){                 if( val[i].s<=val[i-1].t){                        val[i].s=val[i-1].s, val[i].t=max(val[i].t,val[i-1].t);                     r1=val[i].t-val[i].s;                 }                 else{                      if(r2<val[i].s-val[i-1].t) r2=val[i].s-val[i-1].t;                      if(r<r1) r=r1;                      r1=val[i].t-val[i].s;                 }        }    fout<<r<<' '<<r2<<endl;    }    //  system("pause");     return 0;}

namenum: 原来不停的超时,不过后来改了一下,使得每次的查询就是一个线性的5000,所以过了,DFS的时候是我们本来是按字典序枚举的,所以,就是上次扫描结束的地方继续下次扫描。

代码:

/*ID: duanjia2PROG: namenumLANG: C++*/#include<iostream>#include<algorithm>#include<string.h>#include<fstream>using namespace std;char ans[15],name[5000][15],str[15];int f,n,p;ifstream fin("namenum.in");ofstream fout("namenum.out");bool cmp(){     for(int i=p;i<5000;i++){  //从P开始          int temp=strcmp(ans,name[i]);          if( temp==0)              return true;          if(temp<0){ p=i; break;}     }     return false;}void DFS(int num,int cnt){     if( cnt==n){         if( cmp()){             f=0;             fout<<ans<<endl;         }         return;     }     int b=(num-2)*3;     for(int i=0; i<3; i++){          if( b+i>15) ans[cnt]=b+1+i+'A';          else ans[cnt]=b+i+'A';          DFS(str[cnt+1]-'0',cnt+1);          ans[cnt]='\0';     }}int main(){          ifstream  infile("dict.txt",ios::in);     for(int i=0;i<5000;i++){       infile>>name[i];     }     infile.close();          fin>>str;     n=strlen(str);     f=1, p=0;     DFS(str[0]-'0',0);     if(f) fout<<"NONE\n";    // system("pause");     return 0;}

palsquare: 看懂题目意思直接模拟。

代码:

/*ID: duanjia2PROG: palsquareLANG: C++*/#include<iostream>#include<algorithm>#include<vector>#include<string>#include<fstream>using namespace std;string map="0123456789ABCDEFGHIJ";int s[301];string Convert(int n,int b){     int i;     string str;     for( i=0; n; i++){          str+=map[n%b];          n/=b;     }     return str;   }bool cmp(string str){      int j,i;     i=str.length();     for( j=0;j<i/2;j++)          if( str[j]!=str[i-1-j])               return false;    return true;}int main(){    int i,b,len;    for(i=1;i<=300;i++) s[i]=i*i;    ifstream fin("palsquare.in");    ofstream fout("palsquare.out");    string ans,num;    fin>>b;    for( i=1;i<=300;i++){         ans=Convert(s[i],b);         if( cmp(ans)){             num=Convert(i,b);             reverse(num.begin(),num.end());             fout<<num<<' '<<ans<<endl;         }    }          //  system("pause");    return 0;}

dualpal: 看懂题目就没什么好说了。

代码:

/*ID: duanjia2PROG: dualpalLANG: C++*/#include<iostream>#include<string.h>#include<fstream>using namespace std;bool f[15000];bool Convert(int n,int b){     int i,j;     char str[50];     for( i=0; n; i++){          str[i]=n%b+'0';          n/=b;     }     for( j=0;j<i/2;j++)          if( str[j]!=str[i-1-j])               return false;    return true;}int main(){    int i,j,n,s,cnt;    ifstream fin("dualpal.in");    ofstream fout("dualpal.out");    memset(f,false,sizeof(f));    for( i=1;i<=13000;i++){         cnt=0;         for( j=2;j<=10&&cnt<=2;j++)              if( Convert(i,j))                  cnt++;         if(cnt>=2)  f[i]=true;    }    fin>>n>>s;    cnt=0;    for( i=s+1;cnt!=n;i++){         if( f[i]){             fout<<i<<endl;             cnt++;         }    }       //     system("pause");    return 0;}

 

原创粉丝点击