이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pii pair<int,int>
#define pb push_back
const int mn=1e5+5;
const int mod=1e9+7;
int dp[1100000][2];
int a[1100000];
signed main(){
//freopen("","r",stdin);
//freopen("","w",stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
int l,q;
cin>>l>>q;
for (int i=0;i<(1<<l);i++){
char c;
cin>>c;
dp[i][0]=c-'0';
dp[i][1]=c-'0';
a[i]=c-'0';
}
for (int i=0;i<l;i++){
for (int mask=0;mask<(1<<l);mask++){
if (mask>>i&1){
dp[mask][0]+=dp[mask^(1<<i)][0];
}
}
}
for (int i=0;i<l;i++){
for (int mask=(1<<l)-1;mask;mask--){
if (mask>>i&1){
dp[mask^(1<<i)][1]+=dp[mask][1];
}
}
}
while (q--){
string s;
cin>>s;
vector<int> pos,p0,p1;
int c0=0,c1=0,c2=0;
int m=0;
for (int i=0;i<l;i++){
if (s[i]=='0') {
c0++;
p0.pb(i);
}
else if (s[i]=='1'){
c1++;
m^=(1<<(l-i-1));
p1.pb(i);
}
else {
c2++;
pos.pb(i);
}
}
int ans=0;
if (c0<=6){
for (int mask=0;mask<(1<<c0);mask++){
int msk=m;
int cnt=0;
for (int i=0;i<c0;i++){
if (mask>>i&1) {
msk^=(1<<(l-p0[i]-1));
}
else cnt++;
}
if ((cnt&1)==(c0&1))ans+=dp[msk][1];
else ans-=dp[msk][1];
}
}
else if (c1<=6){
for (int i=0;i<c2;i++){
m^=(1<<(l-pos[i]-1));
}
for (int mask=0;mask<(1<<c1);mask++){
int msk=m;
int cnt=0;
for (int i=0;i<c1;i++){
if (mask>>i&1) cnt++;
else{
msk^=(1<<(l-p1[i]-1));
}
}
if ((cnt&1)==(c1&1))ans+=dp[msk][0];
else ans-=dp[msk][0];
}
}
else{
for (int mask=0;mask<(1<<c2);mask++){
int msk=m;
for (int i=0;i<c2;i++){
if (mask>>i&1) msk+=(1<<(l-pos[i]-1));
}
ans+=a[msk];
}
}
cout<<ans<<"\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |