zoukankan      html  css  js  c++  java
  • USACO sec1.1

    感觉usaco的每道题都很不错,因为虽然简单但是都有点麻烦,很锻炼编程能力

    1. Your Ride Is Here纯水题
      /*
      ID: wutao161
      PROG: ride
      LANG: C++     
      */
      #include <iostream>
      #include <fstream>
      #include <string>
      #include <string.h>
      using namespace std;
      
      char cmt[7],grp[7];
      int sc,sg;
      
      int main() {
          ofstream fout ("ride.out");
          ifstream fin ("ride.in");
          
          while(fin>>cmt>>grp)
          {
              sc=sg=1;
              for(int i=0;i<strlen(cmt);i++)
                  sc=sc*(cmt[i]-64)%47;
              for(int i=0;i<strlen(grp);i++)
                  sg=sg*(grp[i]-64)%47;
                    
              if( sc==sg )
                  fout<<"GO"<<endl;
              else
                  fout<<"STAY
      ";
          }
          return 0;
      }
      View Code
    2. Greedy Gift Givers水题
      #include<iostream>
      #include<fstream>
      #include<map>
      #include<string>
      #include<vector>
      #include<cstring>
      using namespace std;
      
      ifstream fin("gift1.in");
      ofstream fout("gift1.out");
      
      int n;
      string name[10];
      string t;
      int leftover[10];
      int ini[10];
      int final[10];
      
      
      int main(){
          
          map<string,int> s;
          int pos,m,p,gift;
          fin>>n;
          memset(ini,0,sizeof(ini));
          memset(final,0,sizeof(final));
          
          for(int i=0;i<n;i++)
          {
              fin>>name[i];
              s[name[i]]=i;
          }//½«ÈËÃûÓëÆäÐòºÅÒ»Ò»¶ÔÓ¦ 
          
          for(int k=0;k<n;k++){
              fin>>t;
              pos=s[t];
              fin>>m>>p;
              if(!p)
                  continue;
              
              ini[pos]=m;
              final[pos] +=  m % p ;
              gift = m/p;
              for(int i=0;i<p;i++)
              {
                  fin>>t;
                  pos=s[t];
                  final[pos]+=gift;
              }
          }
          
          for(int i=0;i<n;i++){
              fout<<name[i]<<" "<<final[i]-ini[i]<<endl;
          }
          
          return 0;
      }
      View Code
    3. Friday the Thirteenth(日历计算的水题)
      /*
      ID: wutao161
      PROG: friday
      LANG: C++         
      */
      
      #include<iostream>
      #include<fstream>
      #include<cstring>
      using namespace std;
      
      int norm[12]={31,28,31,30,31,30,31,31,30,31,30,31};
      int leap[12]={31,29,31,30,31,30,31,31,30,31,30,31};
      int day[7];//frequency  //monday is 1
      
      int main(){
          
          freopen("friday.in","r",stdin);
          freopen("friday.out","w",stdout); 
          int n;
          cin>>n;
      
          memset(day,0,sizeof(day));
          
          int s=0;//Ò»ºÅÊÇÐÇÆÚ¼¸      
          int thisyear;
          for(int i=0;i<n;i++)
          {
              thisyear=1900+i;
              if( thisyear % 100 == 0 )
              {
                  if( thisyear%400==0 ) //leap
                      for(int j=0;j<12;j++){
                          day[(s+5)%7]++;
                          s+=(leap[j]-1)%7+1;
                          s%=7;
                      }
                  else
                      for(int j=0;j<12;j++){
                          day[(s+5)%7]++;
                          s+=(norm[j]-1)%7+1;
                          s%=7;
                      }    
              }
              else if( thisyear % 4 != 0 )
              {
                  for(int j=0;j<12;j++){
                      day[(s+5)%7]++;
                      s+=(norm[j]-1)%7+1;
                      s%=7;
                  }
              }
              else //leap
              {
                  for(int j=0;j<12;j++){
                      day[(s+5)%7]++;
                  //    cout<<(s+5)%7<<" ";
                      s+=(leap[j]-1)%7+1;
                      s%=7;
                  //    cout<<s<<"
      ";
                  }
              }
          }
          
          for(int i=5;i<7;i++)    cout<<day[i]<<" ";
          for(int i=0;i<4;i++)    cout<<day[i]<<" ";
          cout<<day[4]<<endl;
          return 0;
      }
      View Code
    4. Broken Necklace(约瑟夫环变形  模拟)
      /*
      ID: wutao161
      PROG: beads
      LANG: C++11
      */
      #include<vector>
      #include<iostream>
      #include<cstring>
      #include<string>
      #include<algorithm>
      #include<cstdio>
      #include<set>
      #include<map>
      #include<cmath>
      using namespace std;
      
      int nex[350],pre[350];
      int n;
      bool vis[350];
      string s;
      
      void ini(){
          for(int i=0;i<n-1;i++)
              nex[i]=i+1;
          nex[n-1]=0;
          for(int i=1;i<n;i++)
              pre[i]=i-1;
          pre[0]=n-1;
      }
      
      int right(int st){
          
          int cnt=0,i=st;
          char bgcolor=s[st];
          while(s[i]==bgcolor || s[i]=='w' )
          {
              //vis[i]=1;
              if(cnt>=n)
                  break;
              i=nex[i];
              cnt++;
              if(bgcolor=='w')
                  bgcolor=s[i];
          }
          return cnt;
      }
      
      int left(int st){
          int cnt=0,i=st;
          char bgcolor=s[st];
          while(s[i]==s[st] || s[i]=='w')
          {
              //if(vis[i])
              //    break;
              if(cnt>=n)
                  break;
              i=pre[i];
              cnt++;
              if(bgcolor=='w')
                  bgcolor=s[i];
          }
          return cnt;
      }
      
      int main(){
          freopen("beads.in","r",stdin);
          freopen("beads.out","w",stdout);
          cin>>n;
          cin>>s;
          int ans=-1000;
          ini();
          for(int i=0;i<n-1;i++)
          {
              ans=max(ans,left(i)+right(i+1));
          }
          if(ans>n)
              ans=n;
          cout<<ans<<endl;
          return 0;
      }
      
      /*
      DESCRIPTION:
      可以利用约瑟夫环的链表思想来处理环 
      也可以用队列 
      */
      View Code
  • 相关阅读:
    2016.6.26考试
    爆搜。。。。。。。
    9.18目标
    9.17水题总结
    9.16测试
    9.10考试
    jzoj P1163 生日派对灯
    9.04考试总结
    8/8刷题记录
    a[i++]
  • 原文地址:https://www.cnblogs.com/neverchanje/p/3632240.html
Copyright © 2011-2022 走看看