HDOJ 1536 SG函數的基本應用

來源:互聯網
上載者:User

從題意來看,是基本的SG函數應用,把剛學的set用進去最佳化,發現不行...

TLE...

再看看SG的原理,網上大部分都是採用遞迴,而那些題解報告都是一把抄,嗤之以鼻..

下面是直接TLE的代碼:

/*********************S-NimSevenster2012.08.26 12:55*********************/#include<iostream>#include<algorithm>#include<set>using namespace std;bool cmp( int a,int b ){ return a>b; }void setSG( int *sg,int *S,int Sn ){  //sort( S,S+Sn,cmp );  sg[0]=0;  set<int> se;  set<int>::iterator it;  for( int i=1;i<=10000;i++ )  {    se.erase(se.begin(),se.end());    for( int j=0;j<Sn;j++ )    {      if( i-S[j]<0 )      continue;   se.insert( sg[i-S[j]] );       }       int fnum=0;       while( true )       {    if( se.find(fnum)==se.end() )    {     sg[i]=fnum;     break;    }    fnum++;    } }  return ;}int main(){ int S_size; int S[111];int sg[11111]; while( scanf("%d",&S_size)!=EOF&&S_size ) {    for( int i=0;i<S_size;i++ )    scanf( "%d",&S[i] );    setSG( sg,S,S_size );    int T,n,data;    scanf( "%d",&T );    while( T-- )    {     int xo=0;     scanf( "%d",&n );     for( int i=0;i<n;i++ )     {        scanf( "%d",&data );        xo^=sg[data];      }          printf( "%c",xo?'W':'L' );     }     printf( "\n" );  } return 0;}

看來STL不能胡亂用=.=

悲催悲催...

/*********************S-NimSevenster2012.08.26 12:55*********************/#include<iostream>#include<algorithm>#include<set>using namespace std;bool cmp( int a,int b ){ return a>b; }void setSG( int *sg,int *S,int Sn ){  //sort( S,S+Sn,cmp );  sg[0]=0;  //set<int> se;  //set<int>::iterator it;  bool flag[111];  for( int i=1;i<=10000;i++ )  {    memset(flag,0,sizeof(flag));  for( int j=0;j<Sn;j++ )    {      if( i-S[j]<0 )      continue;   flag[sg[i-S[j]]]=1;       }       for( int j=0;j<=101;j++ )          if( flag[j]==0 )          {             sg[i]=j;             break;   } }  return ;}int main(){ int S_size; int S[111];int sg[11111]; while( scanf("%d",&S_size)!=EOF&&S_size ) {    for( int i=0;i<S_size;i++ )    scanf( "%d",&S[i] );    setSG( sg,S,S_size );    int T,n,data;    scanf( "%d",&T );    while( T-- )    {     int xo=0;     scanf( "%d",&n );     for( int i=0;i<n;i++ )     {        scanf( "%d",&data );        xo^=sg[data];      }          printf( "%c",xo?'W':'L' );     }     printf( "\n" );  } return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.