记录编号 484523 评测结果 AAAAAAAAAA
题目名称 [NOI 1996]三角形灯塔 最终得分 100
用户昵称 GravatarRealFan 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2018-01-25 08:27:49 内存使用 0.25 MiB
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
 
#define oo 0x3f3f3f3f
#define mp make_pair
#define fi first
#define se second
#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
#define FO(i,a,b) for(int i=a;i<=b;++i)
#define FD(i,a,b) for(int i=a;i>=b;--i)
#define FE(i,G,x) for(int i=G.h[x];~i;i=G.v[i].nxt)
typedef long long LL;
typedef pair<int, int> PII;
 
template <class T> inline bool chkmin(T& x, T y) { return x > y ? x = y, true : false; }
template <class T> inline bool chkmax(T& x, T y) { return x < y ? x = y, true : false; }
 
inline LL read(void){
    LL x,f=1;char ch=getchar();
    for(;!isdigit(ch);ch=getchar()) if (ch=='-') f=-1; 
    for(x=0;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
    return x*f;
}

#define N 55
int n,m,x,y,z,cnt,f[N];
LL pw[N],mu[N][N],M[N*N];

void pre(){
	pw[0]=1;FO(i,1,n) pw[i]=pw[i-1]*2;
	FO(i,1,n) mu[n][i]=pw[i];
	FD(i,n-1,1)FO(j,1,i) mu[i][j]=mu[i+1][j]^mu[i+1][j+1];
}

void gauss(){
	int t,k=1;  // current equation
	FO(i,1,n){
		t=-1;FO(j,k,m) if ((M[j]>>i)&1) { t=j; break; }
		if (t==-1) { f[i]=1; ++cnt; continue; } 
		if (t!=k) swap(M[t],M[k]);
		FO(j,k+1,m) if ((M[j]>>i)&1) M[j]^=M[k];
		++k;
	}
	FO(i,1,m){
		FO(j,1,n) if (f[j]&&((M[i]>>j)&1)) goto E;
		if (M[i]==1){ cnt=-1; break; } E:;
	}
}

int main(void) {
	freopen("lighthouse.in","r",stdin);
	freopen("lighthouse.out","w",stdout);
	n=read();pre();
	x=read();y=read();z=read();
	while (x*y){
		++m;M[m]=z|mu[x][y];
		x=read();y=read();z=read();
	}
	gauss();
	if (~cnt) printf("%d\n",1LL<<cnt); else puts("No Answer!");
    return 0;
}