QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#875357 | #9980. Boolean Function Reconstruction | ucup-team5008# | WA | 0ms | 3712kb | C++20 | 1.2kb | 2025-01-29 16:36:55 | 2025-01-29 16:36:55 |
Judging History
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)