USACO chapter 2 section 2 Party Lamps

USACO chapter 2 section 2 Party Lamps

USER: tian tianbing [tbbd4261]
TASK: lamps
LANG: C++
Compiling...
Compile: OK
Executing...
Test 1: TEST OK [0.011 secs, 3020 KB]
Test 2: TEST OK [0.000 secs, 3020 KB]
Test 3: TEST OK [0.000 secs, 3020 KB]
Test 4: TEST OK [0.011 secs, 3020 KB]
Test 5: TEST OK [0.000 secs, 3020 KB]
Test 6: TEST OK [0.000 secs, 3020 KB]
Test 7: TEST OK [0.011 secs, 3020 KB]
Test 8: TEST OK [0.011 secs, 3020 KB]
All tests OK.

Your program ('lamps') produced all correct answers! This is your submission #4 for this problem. Congratulations!

Here are the test data inputs:

------- test 1 -------
10
0
-1
-1
------- test 2 -------
10
0
-1
1 -1
------- test 3 -------
20
3
-1
1 3 5 -1
------- test 4 -------
50
100
1 -1
-1
------- test 5 -------
75
250
-1
-1
------- test 6 -------
100
8394
1 7 13 19 25 31 37 43 49 55 -1
64 -1
------- test 7 -------
100
2000
31 86 23 -1
42 -1
------- test 8 -------
100
8950
-1
-1
Keep up the good work!

Thanks for your submission!
注意条件:
if( c>=(i1+i2+i3+i4)&&(c-(i1+i2+i3+i4))%2==0 )……

/*
ID:tbbd4261
PROG:lamps
LANG:C++
*/

#include
< fstream >
#include
< iostream >
#include
< string >
#include
< algorithm >
#include
< vector >
using   namespace  std;
ifstream fin(
" lamps.in " );
ofstream fout(
" lamps.out " );
int  n,c,t;
bool  f[ 101 ];
bool  g[ 101 ];
int  last[ 101 ];

bool  judge()
{
     
for ( int  i = 1 ; i <= n; i ++ )
             
if (last[i] !=- 1 && last[i] != g[i])
              
return   false ;
     
return   true ;
}

void  turn1()
{
     
for ( int  i = 1 ; i <= n; i ++ )
           g[i]
=! g[i];
}

void  turn2()
{
     
for ( int  i = 1 ; i <= n; i += 2 )
          g[i]
=! g[i];
}

void  turn3()
{
     
for ( int  i = 2 ; i <= n;i += 2 )
             g[i]
=! g[i];
}

void  turn4()
{
     
     
for ( int  i = 0 ,k = 1 ; k <= n;)
     {
           g[k]
=! g[k];
           i
++ ;
           k
= 3 * i + 1 ;
     }
}

int  main()
{
    fin
>> n;
    fin
>> c;
    vector
< string >  vec;
    
string  s;
    fill_n(f,
sizeof  f, 1 );
    fill_n(last,
sizeof  last,  - 1 );
    
while (fin >> t,t !=- 1 )last[t] = 1 ;
    
while (fin >> t,t !=- 1 )last[t] = 0 ;
    
int  i1, i2, i3, i4,i;
    
for (i1 = 0 ; i1 <= 1 ; i1 ++ )
    
for (i2 = 0 ; i2 <= 1 ; i2 ++ )
    
for (i3 = 0 ; i3 <= 1 ; i3 ++ )
    
for (i4 = 0 ; i4 <= 1 ; i4 ++ ){
              
if ( c >= (i1 + i2 + i3 + i4) && (c - (i1 + i2 + i3 + i4)) % 2 == 0  ){
                      
for (i = 1 ; i <= n;i ++ )
                              g[i]
= f[i];
                      
if (i1)turn1();
                      
if (i2)turn2();
                      
if (i3)turn3();
                      
if (i4)turn4();
                      
                      
if (judge()){
                           
for (s = "" ,i = 1 ; i <= n; i ++ )
                                 s
+= ' 0 ' + g[i];
                           vec.push_back(s);
                      }
              }
    }
    
    sort(vec.begin(),vec.end());
    
if (vec.size() == 0 )fout << " IMPOSSIBLE " << endl;
    
else {
       
for (i = 0 ; i < vec.size(); i ++ )
                fout
<< vec[i] << endl;
       }               
    
return   0 ;
}

你可能感兴趣的:(USACO chapter 2 section 2 Party Lamps)