mirror of
https://github.com/Kiritow/OJ-Problems-Source.git
synced 2024-03-22 13:11:29 +08:00
Create 1176.cpp
This commit is contained in:
parent
9eac48751e
commit
361d657896
122
POJ/1176.cpp
Normal file
122
POJ/1176.cpp
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
#include<iostream>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstring>
|
||||||
|
#include<algorithm>
|
||||||
|
#include<string>
|
||||||
|
#include<stdlib.h>
|
||||||
|
using namespace std;
|
||||||
|
int N;
|
||||||
|
int C;
|
||||||
|
int a[101];
|
||||||
|
int _open[101];
|
||||||
|
int _close[101];
|
||||||
|
string ss[300];
|
||||||
|
void do1()
|
||||||
|
{
|
||||||
|
for(int i=1;i<=100;++i)
|
||||||
|
a[i]^=1;
|
||||||
|
}
|
||||||
|
void do2()
|
||||||
|
{
|
||||||
|
for(int i=2;i<=N;i+=2)
|
||||||
|
a[i]^=1;
|
||||||
|
}
|
||||||
|
void do3()
|
||||||
|
{
|
||||||
|
for(int i=1;i<=N;i+=2)
|
||||||
|
a[i]^=1;
|
||||||
|
}
|
||||||
|
void do4()
|
||||||
|
{
|
||||||
|
for(int i=1;i<=N;i+=3)
|
||||||
|
a[i]^=1;
|
||||||
|
}
|
||||||
|
int cnt=0;
|
||||||
|
int check()
|
||||||
|
{
|
||||||
|
for(int i=1;i<=N;++i){
|
||||||
|
if(_open[i]==1&&a[i]==0)return 1;
|
||||||
|
if(_close[i]==1&&a[i]==1)return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
void dfs(int c)
|
||||||
|
{
|
||||||
|
if(c==C)
|
||||||
|
{
|
||||||
|
if(check()==0)
|
||||||
|
{
|
||||||
|
ss[cnt]="";
|
||||||
|
for(int i=0; i<N; i++)
|
||||||
|
ss[cnt]+=(a[i+1]+'0');
|
||||||
|
cnt++;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(int i=1;i<=4;++i)
|
||||||
|
{
|
||||||
|
switch(i)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
do1();//????
|
||||||
|
dfs(c+1);
|
||||||
|
do1();//?????????
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
do2();
|
||||||
|
dfs(c+1);
|
||||||
|
do2();
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
do3();
|
||||||
|
dfs(c+1);
|
||||||
|
do3();
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
do4();
|
||||||
|
dfs(c+1);
|
||||||
|
do4();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
// freopen("1176.in","r",stdin);
|
||||||
|
scanf("%d",&N);
|
||||||
|
scanf("%d",&C);
|
||||||
|
memset(_open,0,sizeof(_open));
|
||||||
|
memset(_close,0,sizeof(_close));
|
||||||
|
for(int i=1;i<=N;++i)
|
||||||
|
a[i]=1;
|
||||||
|
int tmp;
|
||||||
|
while(scanf("%d",&tmp)==1&&tmp!=-1)
|
||||||
|
_open[tmp]=1;
|
||||||
|
while(scanf("%d",&tmp)==1&&tmp!=-1)
|
||||||
|
_close[tmp]=1;
|
||||||
|
if(C>4)
|
||||||
|
{
|
||||||
|
C%=2;
|
||||||
|
if (C==1)
|
||||||
|
{
|
||||||
|
C=3;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
C=4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dfs(0);
|
||||||
|
sort(ss,ss+cnt);
|
||||||
|
cout<<ss[0]<<endl;
|
||||||
|
int i,j;
|
||||||
|
for(i=0,j=1;j<cnt;j++)
|
||||||
|
if(ss[i]!=ss[j])
|
||||||
|
{
|
||||||
|
i=j;
|
||||||
|
cout<<ss[i]<<endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user