QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#875581#9980. Boolean Function ReconstructionFesdrerWA 1ms3712kbC++171.5kb2025-01-29 23:31:132025-01-29 23:31:23

Judging History

This is the latest submission verdict.

  • [2025-01-29 23:31:23]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3712kb
  • [2025-01-29 23:31:13]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
const int N=15;
int T,n;
char a[1<<N];
vector<char> ans;
void dfs(int x,int l,int r){
	if(x==0){
		ans.push_back('a');
		return;
	}
	int mid=(l+r)/2,tag=0;
	for(int i=l;i<=mid;i++)	if(a[i]=='1')	tag++;
	if(tag==0){
		for(int i=mid+1;i<=r;i++)	if(a[i]=='1')	tag++;
		assert(tag);
		if(tag==1&&a[mid+1]=='1')	ans.push_back('a'+x);
		else{
			ans.push_back('a'+x),ans.push_back('&');
			ans.push_back('('),dfs(x-1,mid+1,r),ans.push_back(')');
		}
	}
	else if(tag==1&&a[l]=='1')	ans.push_back('a'+x);
	else{
		ans.push_back('(');
		dfs(x-1,l,mid);
		ans.push_back(')');
		tag=0;
		for(int i=mid+1;i<=r;i++)	if(a[i]=='1')	tag++;
		if(tag==0)	return;
		else if(tag==1&&a[mid+1]=='1')	ans.push_back('|'),ans.push_back('a'+x);
		else{
			ans.push_back('|'),ans.push_back('a'+x),ans.push_back('&');
			ans.push_back('('),dfs(x-1,mid+1,r),ans.push_back(')');
		}
	}
}
void solve(){
	cin>>n>>a;
	for(int s=(1<<n)-1;s>=0;s--)	for(int i=0;i<n;i++)
		if((s&(1<<i))&&a[s]=='0'&&a[s-(1<<i)]=='1'){
			cout<<"No\n";
			return;
		}
	cout<<"Yes\n";
	for(int s=(1<<n)-1;s>=0;s--)	for(int i=0;i<n;i++)
		if((s&(1<<i))&&a[s]=='1'&&a[s-(1<<i)]=='1')	a[s]='0';
	ans.clear();
	int tag=0;
	for(int i=0;i<(1<<n);i++)	if(a[i]=='1')	tag++;
	if(tag==0)	cout<<"F\n";
	else if(tag==1&&a[0]=='1')	cout<<"T\n";
	else{
		ans.clear();
		dfs(n-1,0,(1<<n)-1);
		for(char i:ans)	cout<<i;
		cout<<"\n";
	}
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	cin>>T;
	while(T--)	solve();
	return 0;
}

详细

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3712kb

input:

7
2
0001
2
0111
2
1111
3
00010111
1
10
2
0101
5
00000000000000000000000000000001

output:

Yes
b&(a)
Yes
(a)|b
Yes
T
Yes
(b&(a))|c&((a)|b)
No
Yes
(a)
Yes
e&(d&(c&(b&(a))))

result:

wrong answer invalid expressions 9 (test case 1)