zl程序教程

您现在的位置是:首页 >  其它

当前栏目

BZOJ2102 : [Usaco2010 Dec]The Trough Game

The Game Dec
2023-09-11 14:15:04 时间

暴力枚举答案然后检验。

 

#include<cstdio>
int n,m,i,j,k,a[100],b[100],cnt,ans;char s[20];
int main(){
  for(scanf("%d%d",&n,&m);i<m;i++)for(scanf("%s%d",s,&b[i]),j=0;j<n;j++)if(s[j]=='1')a[i]|=1<<j;
  for(i=0;i<(1<<n);i++){
    for(k=1,j=0;j<m;j++)if(__builtin_popcount(i&a[j])!=b[j]){k=0;break;}
    if(k){cnt++;if(cnt>1)break;ans=i;}
  }
  if(cnt==1)for(i=0;i<n;i++)putchar(48+(ans>>i&1));else puts(cnt?"NOT UNIQUE":"IMPOSSIBLE");
  return 0;
}