poj 1176 Party Lamps 模拟
2017-07-15 02:30
465 查看
//poj 1176 //sep9 #include <iostream> #include <algorithm> #include <string> using namespace std; const int MAXN=128; int N,C,limit[MAXN],tmp[MAXN]; string pass_string[20]; string get_string() { string res; for(int i=0;i<N;++i) res+=tmp[i]+'0'; return res; } int pass(int state) { int cnt=0; for(int i=0;i<N;++i) tmp[i]=1; if((state&1)==1){ ++cnt; for(int i=0;i<N;++i) tmp[i]=1-tmp[i]; } if((state&2)==2){ ++cnt; for(int i=1;i<N;i+=2) tmp[i]=1-tmp[i]; } if((state&4)==4){ ++cnt; for(int i=0;i<N;i+=2) tmp[i]=1-tmp[i]; } if((state&8)==8){ ++cnt; for(int i=0;i<N;i+=3) tmp[i]=1-tmp[i]; } for(int i=0;i<N;++i) if(limit[i]!=-1&&limit[i]!=tmp[i]) return -1; return cnt; } int main() { scanf("%d%d",&N,&C); memset(limit,-1,sizeof(limit)); int on,off; while(scanf("%d",&on)==1&&on!=-1) limit[on-1]=1; while(scanf("%d",&off)==1&&off!=-1) limit[off-1]=0; int pass_num=0; for(int s=0;s<16;++s){ int sum = pass(s); if(sum==-1) continue; if(C<sum||(C-sum)%2==1) continue; pass_string[pass_num++]=get_string(); } sort(pass_string,pass_string+pass_num); for(int i=0;i<pass_num;++i) if(i==0||pass_string[i]!=pass_string[i-1]) printf("%s\n",pass_string[i].c_str()); return 0; }
相关文章推荐
- POJ 1176 Party Lamps 笔记
- POJ 1176 Party Lamps 稍有玄机
- poj1176 party lamps(dfs)
- poj 1176 Party Lamps
- POJ 1176 - Party Lamps
- POJ 1176 Party Lamps (DFS)
- POJ 1176 Party Lamps (DFS)
- POJ 1176 Party Lamps (DFS)
- poj1029 模拟
- POJ-1363(模拟出栈)
- POJ 2497 Strategies 简单模拟
- POJ 1573 Robot Motion 模拟 难度:0
- poj 2799 IP Networks 模拟
- poj 1176
- 约瑟夫环 poj 3750 小孩报数问题 模拟
- poj 2017 Speed Limit -- 模拟
- poj 2745显示器(模拟)
- (pojstep1.3.1)1017(构造法模拟)
- POJ-----1363栈的模拟
- poj-1573-Robot Motion--模拟