QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#875357#9980. Boolean Function Reconstructionucup-team5008#WA 0ms3712kbC++201.2kb2025-01-29 16:36:552025-01-29 16:36:55

Judging History

This is the latest submission verdict.

  • [2025-01-29 16:36:55]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3712kb
  • [2025-01-29 16:36:55]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define rep2(i,j,k) for(ll i=ll(j);i<ll(k);i++)
#define rep(i,k) rep2(i,0,k)
#define rrep2(i,j,k) for(ll i=ll(j)-1;i>=ll(k);i--)
#define rrep(i,j) rrep2(i,j,0)
#define SZ(a) ll(a.size())
#define eb emplace_back
#define all(a) a.begin(),a.end()
using ll=long long;
using vl=vector<ll>;
using vvl=vector<vl>;
using P=pair<ll,ll>;
using vp=vector<P>;
using vvp=vector<vp>;
const ll inf=LLONG_MAX/4;
template<class T>
bool chmin(T& a,T b){return a>b?a=b,1:0;}
template<class T>
bool chmax(T& a,T b){return a<b?a=b,1:0;}

bool solve(ll n, string& ans, string res){
	if(n==1){
		if(res[0]!=res[1]){
			if(res=="10") return false;
			ans="a";
		}
		else if(res=="00") ans="F";
		else ans="T";
		return true;
	}
	string l, r;
	ll m=SZ(res);
	string a=res.substr(0,m/2), b=res.substr(m/2);
	rep(i,m/2){
		if(a[i]=='1' && b[i]=='0') return false;
	}
	solve(n-1,l,a);
	solve(n-1,r,b);
	ans = '(' + l + "|("+ r + "&" + char('a'+n-1) + "))";
	return true;
}

#define ln "\n"

int main(){
	cin.tie(0)->sync_with_stdio(0);
	ll t;cin>>t;
	while(t--){
		ll n;cin>>n;
		string s;cin>>s;
		string ans;
		if(solve(n,ans,s)){
			cout<<"Yes"<<ln;
			cout<<ans<<ln;
		} else cout<<"No"<<ln;
	}
}

詳細信息

Test #1:

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

input:

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

output:

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

result:

wrong answer 30 operations, you can't use more than 26 operations (test case 7)