QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#482980 | #4222. 题 | zyxawa | 100 ✓ | 584ms | 629520kb | C++14 | 1.3kb | 2024-07-18 08:16:43 | 2024-07-18 08:16:43 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define loop(i) for(int j=0;j<=min(i,n);j++) for(int k=0;k<=min(i,n)&&j+k<=n;k++) for(int l=0;l<=min(i,n)&&j+k+l<=n;l++) for(int r=0;r<=min(i,n)&&j+k+l+r<=n;r++) for(int p=0;p<=min(i,n)&&j+k+l+r+p<=n;p++) for(int q=0;q<=min(i,n)&&j+k+l+r+p+q<=n;q++)
int t,n;
long long ans,f[21][21][21][21][21][21],g[21][21][21][21][21][21];
char s[61];
const int mod=1e9+7;
int main(){
scanf("%d",&t);
while(t--){
scanf("%d%s",&n,s+1);
loop(n) g[j][k][l][r][p][q]=0;
g[0][0][0][0][0][0]=1;
for(int i=1;i<=n*3;i++){
loop(i){
swap(f[j][k][l][r][p][q],g[j][k][l][r][p][q]);
g[j][k][l][r][p][q]=0;
}
loop(i){
long long v=f[j][k][l][r][p][q];
if(s[i]=='0'||s[i]=='1'){
(g[j+1][k][l][r][p][q]+=v)%=mod;
if(k) (g[j][k-1][l][r][p+1][q]+=v*k)%=mod;
if(q) (g[j][k][l][r][p][q-1]+=v*q)%=mod;
}
if(s[i]=='0'||s[i]=='2'){
(g[j][k+1][l][r][p][q]+=v)%=mod;
if(l) (g[j][k][l-1][r][p][q+1]+=v*l)%=mod;
if(r) (g[j][k][l][r-1][p][q]+=v*r)%=mod;
}
if(s[i]=='0'||s[i]=='3'){
(g[j][k][l+1][r][p][q]+=v)%=mod;
if(j) (g[j-1][k][l][r+1][p][q]+=v*j)%=mod;
if(p) (g[j][k][l][r][p-1][q]+=v*p)%=mod;
}
}
}
ans=g[0][0][0][0][0][0];
for(int i=1;i<=n;i++) (ans*=i)%=mod;
printf("%lld\n",ans);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 10
Accepted
time: 0ms
memory: 9972kb
input:
5 1 123 1 100 1 000 1 300 1 010
output:
0 1 3 1 1
result:
ok 5 lines
Test #2:
score: 10
Accepted
time: 3ms
memory: 18352kb
input:
5 1 303 2 000320 2 002000 2 002020 2 020020
output:
0 36 60 12 12
result:
ok 5 lines
Test #3:
score: 10
Accepted
time: 0ms
memory: 28488kb
input:
5 2 110133 3 200010000 3 002002200 3 300000000 3 000000130
output:
0 5940 540 15120 7560
result:
ok 5 lines
Test #4:
score: 10
Accepted
time: 0ms
memory: 71644kb
input:
5 5 000000000000000 4 000000000000 3 000000000 2 000000 1 000
output:
864823720 29937600 45360 180 3
result:
ok 5 lines
Test #5:
score: 10
Accepted
time: 7ms
memory: 108516kb
input:
5 6 000121310223223210 7 033221120002010100230 7 000003020000010302010 7 000010002020302300100 7 030100002033300000000
output:
26853120 152413083 939384999 4309685 970165754
result:
ok 5 lines
Test #6:
score: 10
Accepted
time: 8ms
memory: 196664kb
input:
5 9 120332011311030220200103301 10 200003200103011232000202201120 10 000000201330030030101000003000 10 020000002032000000200000100002 10 100200322001000000320000002010
output:
963757075 290911546 487693965 730680478 984422198
result:
ok 5 lines
Test #7:
score: 10
Accepted
time: 36ms
memory: 338196kb
input:
5 13 000000000000000000000000000000000000000 12 000000000000000000000000000000000000 11 000000000000000000000000000000000 10 000000000000000000000000000000 9 000000000000000000000000000
output:
856865849 574346463 607449787 883895867 88660419
result:
ok 5 lines
Test #8:
score: 10
Accepted
time: 219ms
memory: 459308kb
input:
5 15 331110203302222220331213331310312220103030021 16 001301022200100032010330002213000300220033210033 16 020002030002000330003200030010000000000100002300 16 320000001003222000003000003000300010323113200020 16 000203000000000000010100000000000000002000210000
output:
70336694 482512438 740138646 212387388 427674884
result:
ok 5 lines
Test #9:
score: 10
Accepted
time: 418ms
memory: 569792kb
input:
5 17 221001103220113003322101120223031133120301212031002 18 201000020000000010323100000333030002012000213100030001 18 013203020100001021200030003102000130000002330303302120 18 010003030200000200100000002000000000000302000203103300 18 000001000132020000200321023010000000000000000132210300
output:
821788453 589132243 303959134 648206569 571580782
result:
ok 5 lines
Test #10:
score: 10
Accepted
time: 584ms
memory: 629520kb
input:
5 18 331110100201233220121012022130200011112133012123201012 19 221011310310012302220013020123002132313030023020101110230 19 202000300003001300011000011021320001000300320020302022103 19 010030200000000000300300310000001302002000010230000330020 19 000000000000031000000000131200020001000020000001020000...
output:
171958822 242716134 229925968 914555153 59496792
result:
ok 5 lines
Extra Test:
score: 0
Extra Test Passed