蒟蒻求助
查看原帖
蒟蒻求助
363523
Enterpr1se楼主2021/2/20 16:24
//Luogu-P1468 
//Luogu @W53729 (Userid 363523)
//@_Qijia (Userid 363524) AK IOI!
#include<iostream>
#include<cstring>
#include<cstdio>
#include<bitset>
#include<string>
#include<algorithm>
#define regll register long long
#define regint register int
#define regshort register short
#define _Qijia using
#define AK namespace
#define IOI std
_Qijia AK IOI;
int n,c,temp,scnt,tcnt;
string sol[20];
int fcon[105];
bitset<101> lights;
const bool ca[20][4]={0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,1,0,1,0,1,1,0,0,1,1,1,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,1};
bool ok(){
	bitset<101> tset(lights);
	for(regint i=1;i<=n;++i){
		if(fcon[i]==0)
			if(tset[i]) return false;
		else if(fcon[i]==1){
			tset.flip(i);
			if(tset[i]) return false;
		}
	}
	return true;
}
int main(){
	memset(fcon,-1,sizeof(fcon));
	bitset<101> s1(string("01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"));
	bitset<101> s2(string("01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"));
	bitset<101> s3(string("00101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"));
	bitset<101> s4(string("01001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001001"));
	scanf("%d%d",&n,&c);
	while(true){
		scanf("%d",&temp);
		if(temp^(-1)) fcon[temp]=1;
		else break;
	}
	while(true){
		scanf("%d",&temp);
		if(temp^(-1)) fcon[temp]=0;
		else break;
	}
	for(regint i=1;i<=16;++i){
		tcnt=0;
		for(regint j=0;j<=3;++j)
			if(ca[i][j]) ++tcnt;
		if((tcnt%2)!=(c%2) || tcnt>c) continue;
		lights=s1;
		if(ca[i][0]) lights=lights^s1;
		if(ca[i][1]) lights=lights^s2;
		if(ca[i][2]) lights=lights^s3;
		if(ca[i][3]) lights=lights^s4;
		if(ok()) ++scnt,sol[scnt]=lights.to_string().substr(1,n);
	}
	sort(sol+1,sol+scnt+1);
	for(regint i=1;i<=scnt;++i) cout<<sol[i]<<'\n';
	if(!scnt) puts("IMPOSSIBLE");
	return 0;
}

码风恶心请见谅
有的时候bitset会莫名往前跳一位

2021/2/20 16:24
加载中...