QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#88793 | #992. Number of Colorful Matchings | eyiigjkn | AC ✓ | 96ms | 4536kb | C++14 | 2.5kb | 2023-03-17 14:29:36 | 2023-03-17 14:29:37 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
using Poly=vector<int>;
constexpr int mod=2;
int n,cnt=0,a[310][310],b[310][310];
char str[310];
inline void add(int &x,const int &y){x=(x+y)%mod;}
Poly operator+(const Poly &F,const Poly &G)
{
int n=F.size(),m=G.size();
Poly H(max(n,m));
copy(F.begin(),F.end(),H.begin());
for(int i=0;i<m;i++) add(H[i],G[i]);
return H;
}
Poly operator*(const Poly &F,const int &x)
{
Poly G=F;
for(int &i:G) i=i*x%mod;
return G;
}
Poly operator*(const Poly &F,const Poly &G)
{
int n=F.size(),m=G.size();
Poly H(n+m-1);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
add(H[i+j],F[i]*G[j]);
return H;
}
void Gauss()
{
for(int i=1;i<=n;i++)
{
while(cnt<=n)
{
for(int j=i;j<=n;j++)
if(b[j][i])
{
if(i!=j) for(int k=1;k<=n;k++)
{
swap(a[i][k],a[j][k]);
swap(b[i][k],b[j][k]);
}
break;
}
if(b[i][i]) break;
cnt++;
for(int j=1;j<=n;j++) assert(!b[j][i]),b[j][i]=a[j][i],a[j][i]=0;
for(int j=1;j<i;j++)
{
int t=mod-b[j][i];
for(int k=1;k<=n;k++)
{
add(a[k][i],t*a[k][j]);
add(b[k][i],t*b[k][j]);
}
}
}
if(cnt>n) break;
for(int j=i+1;j<=n;j++)
{
int t=mod-b[j][i];
for(int k=1;k<=n;k++)
{
add(a[j][k],t*a[i][k]);
add(b[j][k],t*b[i][k]);
}
}
for(int j=i+1;j<=n;j++)
{
int t=mod-b[i][j];
for(int k=1;k<=n;k++)
{
add(a[k][j],t*a[k][i]);
add(b[k][j],t*b[k][i]);
}
}
}
}
void Hessenberg()
{
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
if(a[j][i])
{
if(i+1!=j)
{
for(int k=i;k<=n;k++) swap(a[i+1][k],a[j][k]);
for(int k=1;k<=n;k++) swap(a[k][i+1],a[k][j]);
}
break;
}
if(!a[i+1][i]) continue;
for(int j=i+2;j<=n;j++)
{
int t=mod-a[j][i];
for(int k=i;k<=n;k++) add(a[j][k],t*a[i+1][k]);
for(int k=1;k<=n;k++) add(a[k][i+1],(mod-t)*a[k][j]);
}
}
}
Poly Det()
{
static Poly F[310];
F[0]={1};
for(int i=1;i<=n;i++)
{
F[i]=F[i-1]*Poly{a[i][i],1};
for(int j=i-1,s=a[i][i-1];j;s=s*a[j][j-1]%mod,j--) F[i]=F[i]+F[j-1]*(s*a[j][i]);
}
return F[n];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%s",str+1);
for(int j=1;j<=n;j++) b[i][j]=str[j]-'0';
}
for(int i=1;i<=n;i++)
{
scanf("%s",str+1);
for(int j=1;j<=n;j++) a[i][j]=str[j]-'0';
}
Gauss();
Hessenberg();
Poly F=Det();
for(int i=0,sz=F.size();i<=n;i++) printf("%d\n",i+cnt<sz?F[i+cnt]:0);
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 3532kb
input:
2 11 10 00 11
output:
0 0 1
result:
ok 3 tokens
Test #2:
score: 0
Accepted
time: 2ms
memory: 3656kb
input:
10 0100110000 0000010111 0111000111 1000101100 1101000001 1111110000 1001001110 0000000011 0001000010 0100100110 1100010101 0001000001 0001001010 0011100111 0010101111 1001011011 1001100111 0111101001 0010100010 0001111011
output:
0 0 0 1 1 1 1 1 0 0 1
result:
ok 11 tokens
Test #3:
score: 0
Accepted
time: 2ms
memory: 3568kb
input:
18 001100000000010111 011100011110001011 001101000001111111 000010010011100000 000011000100001001 001001101100010101 000100000100010010 100011100111001010 111110010110111001 100111011110100100 101000100001111011 110000100101011111 101011001000000111 110001011110010101 110010011111001110 001001011100...
output:
0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0
result:
ok 19 tokens
Test #4:
score: 0
Accepted
time: 2ms
memory: 3560kb
input:
18 110000000001011101 110001111000101100 110100000111111100 001001001110000000 001100010000100100 100110110001010100 010000010001001010 001110011100101011 111001011011100110 011101111010010010 100010000111101111 000010010101111110 101100100000011111 000101111001010111 001001111100111000 100101110010...
output:
0 0 0 0 1 0 1 1 1 0 1 1 0 0 1 0 1 1 0
result:
ok 19 tokens
Test #5:
score: 0
Accepted
time: 82ms
memory: 4528kb
input:
300 00000000010111011100011110001011001101000001111111000010010011100000000011000100001001001001101100010101000100000100010010100011100111001010111110010110111001100111011110100100101000100001111011110000100101011111101011001000000111110001011110010101110010011111001110001001011100100010010000000000...
output:
0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 1 ...
result:
ok 301 tokens
Test #6:
score: 0
Accepted
time: 80ms
memory: 4536kb
input:
300 00000001011101110001111000101100110100000111111100001001001110000000001100010000100100100110110001010100010000010001001010001110011100101011111001011011100110011101111010010010100010000111101111000010010101111110101100100000011111000101111001010111001001111100111000100101110010001001000000000001...
output:
0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 0 1 ...
result:
ok 301 tokens
Test #7:
score: 0
Accepted
time: 77ms
memory: 4496kb
input:
300 00000101110111000111100010110011010000011111110000100100111000000000110001000010010010011011000101010001000001000100101000111001110010101111100101101110011001110111101001001010001000011110111100001001010111111010110010000001111100010111100101011100100111110011100010010111001000100100000000000111...
output:
0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 ...
result:
ok 301 tokens
Test #8:
score: 0
Accepted
time: 31ms
memory: 4076kb
input:
200 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 201 tokens
Test #9:
score: 0
Accepted
time: 46ms
memory: 4256kb
input:
230 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000...
output:
0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 231 tokens
Test #10:
score: 0
Accepted
time: 73ms
memory: 4376kb
input:
270 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000...
output:
0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 271 tokens
Test #11:
score: 0
Accepted
time: 96ms
memory: 4492kb
input:
300 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...
output:
0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 301 tokens
Test #12:
score: 0
Accepted
time: 0ms
memory: 3620kb
input:
50 11000111100010110011010000011111110000100100111000 00000011000100001001001001101100010101000100000100 01001010001110011100101011111001011011100110011101 11101001001010001000011110111100001001010111111010 11001000000111110001011110010101110010011111001110 001001011100100010010000000000011101110101...
output:
0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1
result:
ok 51 tokens
Test #13:
score: 0
Accepted
time: 4ms
memory: 3752kb
input:
80 00011110001011001101000001111111000010010011100000000011000100001001001001101100 01010100010000010001001010001110011100101011111001011011100110011101111010010010 10001000011110111100001001010111111010110010000001111100010111100101011100100111 110011100010010111001000100100000000000111011101011011...
output:
0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0
result:
ok 81 tokens
Test #14:
score: 0
Accepted
time: 6ms
memory: 3912kb
input:
120 011110001011001101000001111111000010010011100000000011000100001001001001101100010101000100000100010010100011100111001010 111110010110111001100111011110100100101000100001111011110000100101011111101011001000000111110001011110010101110010011111 001110001001011100100010010000000000011101110101101110...
output:
0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0
result:
ok 121 tokens
Test #15:
score: 0
Accepted
time: 19ms
memory: 4060kb
input:
180 111000101100110100000111111100001001001110000000001100010000100100100110110001010100010000010001001010001110011100101011111001011011100110011101111010010010100010000111101111000010 0101011111101011001000000111110001011110010101110010011111001110001001011100100010010000000000011101110101101110100...
output:
0 1 0 0 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 ...
result:
ok 181 tokens
Test #16:
score: 0
Accepted
time: 32ms
memory: 4168kb
input:
220 1000101100110100000111111100001001001110000000001100010000100100100110110001010100010000010001001010001110011100101011111001011011100110011101111010010010100010000111101111000010010101111110101100100000011111000101111001 010111001001111100111000100101110010001001000000000001110111010110111010011...
output:
1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 0 ...
result:
ok 221 tokens
Test #17:
score: 0
Accepted
time: 48ms
memory: 4376kb
input:
250 0010110011010000011111110000100100111000000000110001000010010010011011000101010001000001000100101000111001110010101111100101101110011001110111101001001010001000011110111100001001010111111010110010000001111100010111100101011100100111110011100010010111 001000100100000000000111011101011011101001111...
output:
0 1 1 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 ...
result:
ok 251 tokens
Test #18:
score: 0
Accepted
time: 59ms
memory: 4400kb
input:
270 101100110100000111111100001001001110000000001100010000100100100110110001010100010000010001001010001110011100101011111001011011100110011101111010010010100010000111101111000010010101111110101100100000011111000101111001010111001001111100111000100101110010001001000000000001 1101110101101110100111111...
output:
0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 ...
result:
ok 271 tokens
Test #19:
score: 0
Accepted
time: 80ms
memory: 4516kb
input:
300 11001101000001111111000010010011100000000011000100001001001001101100010101000100000100010010100011100111001010111110010110111001100111011110100100101000100001111011110000100101011111101011001000000111110001011110010101110010011111001110001001011100100010010000000000011101110101101110100111111110...
output:
0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 ...
result:
ok 301 tokens
Test #20:
score: 0
Accepted
time: 81ms
memory: 4532kb
input:
300 00110100000111111100001001001110000000001100010000100100100110110001010100010000010001001010001110011100101011111001011011100110011101111010010010100010000111101111000010010101111110101100100000011111000101111001010111001001111100111000100101110010001001000000000001110111010110111010011111111010...
output:
1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 ...
result:
ok 301 tokens
Test #21:
score: 0
Accepted
time: 78ms
memory: 4508kb
input:
300 11010000011111110000100100111000000000110001000010010010011011000101010001000001000100101000111001110010101111100101101110011001110111101001001010001000011110111100001001010111111010110010000001111100010111100101011100100111110011100010010111001000100100000000000111011101011011101001111111101001...
output:
0 1 0 1 0 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 ...
result:
ok 301 tokens