为什么abc c这么写是错的
  • 板块学术版
  • 楼主huangyuze01
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/7/20 07:45
  • 上次更新2025/7/20 15:40:50
查看原帖
为什么abc c这么写是错的
743546
huangyuze01楼主2025/7/20 07:45
#include <bits/stdc++.h>
using namespace std;
#define F(i,a,b) for(int i = a; i <= b; i++)
#define F_(i,a,b) for(int i = a; i >= b; i--)
#define pii pair<int,int>
#define fr first
#define sc second
#define mem0(a) memset(a,0,sizeof(a))
#define pb push_back
#define lb(x) (x&(-x))
#define lson u<<1
#define rson u<<1|1
typedef long long ll;
typedef unsigned long long ull;
const int N = 1e6+10,M = 1e4+2;
const double eps = 1e-5;
const ll Mod = 1e9+7;
// huangyuze
int t,k,n;
string s;
int fa[N];
int find(int x){
	return fa[x]==x?x:fa[x]=find(fa[x]);
}
void merge(int x,int y){
	int fx = find(x), fy = find(y);
	if (fx != fy) fa[fy] = fx;
}
void work(){
	cin>>k>>s;
	s = "0"+s;
	n = s.size();
	F(i,0,n-1) fa[i] = i;
	F(num,0,n-1){
		F(i,1,k){
			if (num&(1<<i-1)) continue;
			int nnum = (num^(1<<i-1));
			if (s[nnum] != '1' && s[num] != '1') merge(num,nnum);
		}
	}
	if (find(0)==find(n-1)) puts("Yes");
	else puts("No");
}
int main(){
	cin>>t;
	while (t--) work();
	return 0;
}

2025/7/20 07:45
加载中...