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 -1Keep 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;
}
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 田兵 閱讀(165) 評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi): USACO

