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;
}

posted on 2010-08-01 21:37 田兵 阅读(135) 评论(0)  编辑 收藏 引用 所属分类: USACO


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2010年8月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿(2)

随笔分类(65)

随笔档案(65)

文章档案(2)

ACM

搜索

积分与排名

最新随笔

最新评论

阅读排行榜