QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#812701 | #2576. 麻将 | xujindong | 100 ✓ | 12ms | 5488kb | C++14 | 12.8kb | 2024-12-13 18:02:18 | 2024-12-13 18:02:18 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int mod=998244353,C[5][5]={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1}},tr[572][5]={{0,0,0,0,0},{1,2,7,16,25},{1,3,17,32,38},{1,12,22,71,107},{4,8,19,64,87},{5,9,18,63,88},{6,11,46,69,95},{4,10,20,67,104},{4,27,39,75,117},{5,28,40,74,116},{4,30,41,76,122},{6,29,42,70,124},{12,21,71,107,144},{13,23,72,108,145},{14,24,73,110,146},{13,26,77,108,150},{13,26,78,108,150},{4,15,35,82,153},{6,29,47,157,159},{5,28,48,158,160},{5,31,54,139,254},{12,33,81,152,266},{13,34,82,153,267},{13,36,83,153,267},{14,37,84,154,268},{13,36,85,155,267},{13,79,101,156,265},{4,60,87,99,182},{5,61,88,98,181},{6,62,95,96,180},{13,65,94,111,189},{14,66,89,112,190},{13,65,93,133,194},{12,49,137,252,351},{13,52,138,253,352},{14,53,139,254,353},{13,56,142,255,352},{14,57,143,256,353},{13,56,148,261,352},{5,61,115,274,284},{6,62,123,276,283},{14,80,118,275,292},{44,68,236,235,233},{44,68,246,246,231},{44,45,243,238,246},{44,43,240,239,236},{44,43,244,245,237},{44,68,231,326,326},{6,62,179,313,330},{49,134,252,351,305},{50,135,253,352,306},{51,136,254,353,307},{50,137,253,352,306},{51,138,254,353,307},{55,139,258,354,308},{55,140,258,354,308},{56,141,255,352,306},{57,142,256,353,307},{58,143,257,354,308},{59,151,232,329,309},{60,86,99,182,311},{61,87,98,181,312},{62,88,96,180,313},{62,88,97,180,313},{61,87,100,181,312},{60,90,102,183,320},{61,91,103,184,321},{61,87,112,174,358},{68,95,246,231,326},{68,95,247,231,326},{68,95,236,234,346},{60,90,130,191,360},{61,91,131,192,361},{62,92,132,193,363},{62,88,126,220,366},{61,87,127,221,367},{61,91,128,222,368},{61,91,128,270,355},{61,91,129,271,356},{60,105,145,255,352},{61,106,146,256,353},{60,105,165,209,387},{61,106,166,210,388},{61,106,170,213,388},{62,109,171,214,395},{61,106,174,358,425},{60,113,273,285,399},{61,114,274,284,398},{62,115,276,283,396},{62,115,277,291,397},{60,119,279,286,393},{61,120,280,287,394},{62,121,281,288,392},{61,120,282,289,394},{61,114,278,290,400},{68,123,235,233,417},{68,123,248,251,430},{68,123,234,346,430},{62,115,218,227,384},{61,114,219,228,385},{62,115,220,366,436},{61,120,269,207,388},{61,120,223,229,382},{62,121,224,230,383},{61,120,272,325,428},{56,147,259,352,432},{57,148,260,353,433},{56,147,261,352,432},{57,148,262,353,433},{58,149,263,354,434},{58,149,264,354,434},{57,148,225,369,433},{58,149,226,370,434},{60,176,311,332,491},{61,177,312,331,490},{62,178,313,330,489},{62,178,313,333,489},{61,177,312,334,490},{62,178,324,337,494},{56,185,314,342,486},{57,186,315,343,487},{58,187,313,344,488},{57,186,316,343,487},{68,179,326,326,484},{68,179,326,328,484},{59,188,326,329,485},{68,179,328,346,484},{62,178,365,347,489},{62,178,354,308,488},{58,187,354,308,488},{61,120,201,299,482},{62,121,205,304,488},{68,125,249,309,485},{57,148,206,303,487},{49,161,208,386,462},{50,162,209,387,463},{51,163,210,388,464},{56,164,209,387,463},{57,165,210,388,464},{58,166,211,395,465},{55,167,211,395,465},{56,168,212,387,463},{57,169,213,388,464},{58,170,214,395,465},{56,168,215,381,463},{57,169,216,382,464},{58,170,217,383,465},{56,172,357,424,472},{57,173,358,425,473},{58,174,359,427,474},{57,173,364,435,473},{59,171,250,418,466},{56,185,322,442,498},{57,186,323,443,499},{58,187,324,444,500},{57,186,323,428,510},{57,186,362,447,499},{68,95,231,417,406},{62,88,180,374,403},{68,179,326,417,545},{62,178,313,419,547},{49,195,297,480,537},{50,196,298,481,537},{51,197,299,482,537},{56,199,298,481,537},{57,200,299,482,537},{58,201,300,483,537},{55,198,300,483,537},{56,202,302,486,537},{57,203,303,487,537},{58,204,304,488,537},{59,205,309,485,537},{176,348,306,486,537},{177,349,307,487,537},{178,350,308,488,537},{179,354,309,485,537},{176,310,332,491,515},{177,311,331,490,516},{178,312,330,489,517},{179,313,326,484,524},{179,313,328,484,524},{178,312,333,489,517},{177,311,334,490,516},{177,311,338,496,518},{178,312,339,497,519},{176,317,335,492,521},{177,318,336,493,522},{178,319,337,494,523},{179,324,327,484,525},{177,318,340,493,522},{178,319,341,494,523},{177,311,343,469,522},{178,312,344,470,523},{179,313,329,471,525},{177,318,345,469,522},{195,293,480,537,537},{196,294,481,537,537},{197,295,482,537,537},{198,296,483,537,537},{196,297,481,537,537},{197,298,482,537,537},{198,299,483,537,537},{202,301,486,537,537},{203,302,487,537,537},{204,303,488,537,537},{205,304,485,537,537},{204,303,500,537,537},{178,350,459,553,561},{176,348,453,468,561},{177,349,454,469,561},{178,350,455,470,561},{179,354,461,471,561},{177,349,458,473,561},{178,350,459,474,561},{179,354,460,475,561},{177,349,469,522,561},{178,350,470,523,561},{179,354,471,525,561},{68,179,484,524,524},{62,178,479,517,517},{179,313,484,524,524},{178,312,489,517,517},{178,312,489,523,523},{58,204,483,517,537},{59,205,485,524,537},{178,319,497,519,540},{179,324,484,524,544},{179,313,484,566,566},{178,312,489,565,565},{178,350,470,565,561},{179,354,471,566,561},{231,326,534,536,537},{231,327,534,536,537},{231,326,535,536,537},{231,326,536,537,537},{238,231,535,535,536},{238,231,534,534,536},{238,231,534,535,536},{238,246,531,533,534},{238,246,532,533,534},{242,238,532,532,533},{242,238,531,531,533},{242,243,528,530,531},{242,241,529,530,532},{242,238,533,534,534},{238,246,533,535,535},{238,236,532,533,535},{238,236,533,534,535},{238,231,536,537,537},{249,309,536,537,537},{231,329,535,536,561},{231,326,536,561,561},{176,317,437,495,539},{177,318,438,496,538},{178,319,439,497,540},{177,318,440,496,538},{178,319,441,497,540},{179,324,445,484,544},{179,324,446,484,544},{177,318,422,512,538},{178,319,423,513,540},{177,318,428,510,538},{178,319,429,511,540},{179,324,417,501,544},{179,324,418,502,544},{177,349,433,510,537},{56,202,378,509,537},{57,203,379,510,537},{58,204,380,511,537},{58,204,380,508,537},{178,312,426,474,523},{178,319,427,474,523},{178,319,421,503,523},{61,177,373,402,504},{62,178,374,403,503},{58,187,374,416,511},{68,179,417,406,501},{68,179,418,408,502},{62,178,392,411,508},{57,173,375,414,473},{58,174,376,415,474},{59,175,417,407,475},{58,174,395,411,474},{179,313,417,545,543},{178,312,419,547,541},{177,311,420,548,542},{177,318,422,548,538},{178,319,423,547,540},{179,324,417,545,544},{178,319,429,553,540},{178,312,426,553,540},{179,313,418,554,544},{178,350,434,550,537},{195,448,467,561,561},{196,449,468,561,561},{197,450,469,561,561},{198,451,470,561,561},{202,452,468,561,561},{203,453,469,561,561},{204,454,470,561,561},{205,455,471,561,561},{202,456,472,561,561},{203,457,473,561,561},{204,458,474,561,561},{205,459,475,561,561},{202,456,551,561,561},{203,457,552,561,561},{204,458,553,561,561},{205,459,554,561,561},{249,460,536,561,561},{176,371,401,505,563},{177,372,402,504,564},{178,373,403,503,565},{179,374,406,501,566},{177,372,404,512,564},{178,373,405,513,565},{178,373,416,511,565},{176,389,409,506,561},{177,390,410,507,561},{178,391,411,508,561},{177,390,410,510,561},{178,391,411,511,561},{177,390,412,510,561},{178,391,413,511,561},{179,392,408,502,561},{178,391,413,550,561},{231,417,535,536,561},{231,418,535,536,561},{231,417,536,537,561},{249,431,536,537,561},{179,374,555,545,566},{178,373,556,547,565},{177,372,557,548,564},{179,374,545,543,566},{178,373,547,541,565},{177,390,558,552,561},{178,391,559,553,561},{179,392,560,554,561},{178,391,550,541,561},{179,392,546,543,561},{178,391,553,540,561},{179,392,554,544,561},{203,378,549,537,561},{204,379,550,537,561},{205,380,546,537,561},{204,379,553,537,561},{231,417,536,561,561},{179,374,545,566,566},{202,377,506,537,561},{203,378,507,537,561},{204,379,508,537,561},{202,377,509,537,561},{203,378,510,537,561},{204,379,511,537,561},{205,380,502,537,561},{178,391,508,540,561},{178,391,511,540,561},{177,390,464,473,561},{178,391,465,474,561},{179,392,466,475,561},{177,390,507,522,561},{178,391,508,523,561},{178,391,511,519,561},{179,392,502,525,561},{178,391,474,523,561},{179,374,501,524,566},{179,374,501,566,566},{178,373,503,565,565},{178,391,508,565,561},{204,379,511,561,561},{205,380,502,561,561},{176,476,515,515,567},{177,477,516,516,567},{178,478,517,517,567},{179,479,524,524,567},{178,478,523,523,567},{179,479,525,525,567},{202,467,521,561,567},{203,468,522,561,567},{204,469,523,561,567},{205,470,525,561,567},{203,481,522,561,567},{204,482,523,561,567},{205,483,525,561,567},{179,479,524,566,567},{178,478,517,565,567},{202,480,521,537,567},{203,481,522,537,567},{204,482,523,537,567},{202,480,515,537,567},{203,481,516,537,567},{204,482,517,537,567},{205,483,524,537,567},{203,481,518,537,567},{204,482,519,537,567},{205,483,525,537,567},{179,479,524,543,567},{179,479,524,544,567},{178,478,517,541,567},{177,477,516,542,567},{178,478,517,540,567},{177,477,564,564,567},{178,478,565,565,567},{179,479,566,566,567},{178,478,561,561,567},{179,479,561,561,567},{231,484,561,561,567},{249,485,561,561,567},{249,471,561,561,567},{203,468,564,561,567},{204,469,565,561,567},{205,470,566,561,567},{204,469,561,561,567},{205,470,561,561,567},{204,482,565,561,567},{205,483,566,561,567},{205,483,561,561,567},{231,484,537,537,567},{249,485,537,537,567},{179,479,543,543,567},{178,478,541,541,567},{179,479,544,544,567},{178,478,537,537,567},{179,479,537,537,567},{203,481,538,537,567},{204,482,540,537,567},{205,483,543,537,567},{205,483,544,537,567},{204,482,537,537,567},{205,483,537,537,567},{231,484,537,561,567},{249,471,537,561,567},{203,468,538,561,567},{204,469,540,561,567},{205,470,544,561,567},{204,482,540,561,567},{179,479,543,566,567},{177,390,535,536,567},{178,391,535,536,567},{179,392,535,536,567},{178,391,536,537,567},{179,392,536,537,567},{203,378,536,537,567},{204,379,536,537,567},{205,380,536,537,567},{231,418,536,537,567},{231,418,535,536,567},{204,379,536,561,567},{195,526,536,567,567},{196,533,536,567,567},{197,533,536,567,567},{198,533,536,567,567},{202,535,536,567,567},{203,535,536,567,567},{204,535,536,567,567},{205,535,536,567,567},{202,536,537,567,567},{203,536,537,567,567},{204,536,537,567,567},{205,536,537,567,567},{249,536,537,567,567},{249,535,536,567,567},{202,536,561,567,567},{203,536,561,567,567},{204,536,561,567,567},{205,536,561,567,567},{249,536,561,567,567},{476,537,537,567,567},{477,537,537,567,567},{478,537,537,567,567},{479,537,537,567,567},{484,537,537,567,567},{477,537,561,567,567},{478,537,561,567,567},{479,537,561,567,567},{484,537,561,567,567},{476,514,515,567,567},{477,515,516,567,567},{478,516,517,567,567},{479,517,524,567,567},{476,520,521,567,567},{477,521,522,567,567},{478,522,523,567,567},{479,523,525,567,567},{484,524,537,567,567},{484,525,537,567,567},{477,521,538,567,567},{478,522,540,567,567},{479,523,544,567,567},{479,517,543,567,567},{478,516,541,567,567},{477,515,542,567,567},{477,515,538,567,567},{478,516,540,567,567},{479,517,544,567,567},{477,515,537,567,567},{478,516,537,567,567},{479,517,537,567,567},{477,521,537,567,567},{478,522,537,567,567},{479,523,537,567,567},{484,524,561,567,567},{484,525,561,567,567},{479,517,566,567,567},{478,516,565,567,567},{477,515,564,567,567},{477,521,564,567,567},{478,522,565,567,567},{479,523,566,567,567},{477,521,561,567,567},{478,522,561,567,567},{479,523,561,567,567},{478,516,561,567,567},{479,517,561,567,567},{476,562,563,567,567},{477,563,564,567,567},{478,564,565,567,567},{479,565,566,567,567},{478,564,561,567,567},{479,565,561,567,567},{476,561,561,567,567},{477,561,561,567,567},{478,561,561,567,567},{479,561,561,567,567},{484,566,561,567,567},{484,561,561,567,567},{526,526,567,567,567},{527,528,567,567,567},{527,529,567,567,567},{527,530,567,567,567},{530,531,567,567,567},{530,532,567,567,567},{530,533,567,567,567},{533,534,567,567,567},{533,535,567,567,567},{533,536,567,567,567},{536,537,567,567,567},{536,561,567,567,567},{478,561,567,567,567},{477,561,567,567,567},{479,561,567,567,567},{479,565,567,567,567},{478,564,567,567,567},{484,566,567,567,567},{484,561,567,567,567},{484,524,567,567,567},{484,525,567,567,567},{479,517,567,567,567},{478,516,567,567,567},{478,522,567,567,567},{479,523,567,567,567},{477,537,567,567,567},{478,537,567,567,567},{479,537,567,567,567},{484,537,567,567,567},{231,484,567,567,567},{179,479,567,567,567},{178,478,567,567,567},{204,536,567,567,567},{205,536,567,567,567},{249,536,567,567,567},{536,567,567,567,567},{476,567,567,567,567},{477,567,567,567,567},{478,567,567,567,567},{479,567,567,567,567},{484,567,567,567,567},{567,567,567,567,567}};
int n,a[105],fac[405],vac[405],f[2][405][572],sum[405],ans;
int main(){
f[0][0][1]=fac[0]=vac[0]=vac[1]=1,cin>>n;
for(int i=2;i<=4*n-13;i++)vac[i]=1ll*vac[mod%i]*(mod-mod/i)%mod;
for(int i=1;i<=4*n-13;i++)fac[i]=1ll*fac[i-1]*i%mod,vac[i]=1ll*vac[i]*vac[i-1]%mod;
for(int i=1,w,t;i<=13;i++)cin>>w>>t,a[w]++;
for(int i=0;i<n;i++){
memset(f[~i&1],0,sizeof(f[~i&1]));
for(int j=0;j<=4*i;j++){
for(int k=1;k<=567;k++){
if(!f[i&1][j][k])continue;
for(int l=a[i+1];l<=4;l++)f[~i&1][j+l][tr[k][l]]=(f[~i&1][j+l][tr[k][l]]+1ll*f[i&1][j][k]*C[4-a[i+1]][l-a[i+1]])%mod;
}
}
}
for(int i=1;i<=4*n-13;i++)for(int j=1;j<=566;j++)sum[i]=(sum[i]+f[n&1][i+13][j])%mod;
for(int i=1;i<=4*n-13;i++)ans=(ans+1ll*sum[i]*fac[i]%mod*fac[4*n-13-i]%mod*vac[4*n-13])%mod;
return cout<<(ans+1)%mod<<'\n',0;
}
详细
Pretests
Final Tests
Test #1:
score: 10
Accepted
time: 0ms
memory: 5356kb
input:
5 1 1 1 2 1 3 1 4 2 1 3 1 3 2 3 3 3 4 5 1 5 2 5 3 5 4
output:
570425346
result:
ok single line: '570425346'
Test #2:
score: 10
Accepted
time: 1ms
memory: 5424kb
input:
5 1 3 2 4 4 3 5 3 3 1 5 4 4 2 1 4 4 4 3 3 3 2 1 1 2 2
output:
713031682
result:
ok single line: '713031682'
Test #3:
score: 10
Accepted
time: 1ms
memory: 5488kb
input:
13 1 3 12 1 12 2 1 4 13 3 13 2 3 2 13 1 1 1 3 4 3 3 1 2 12 3
output:
868236068
result:
ok single line: '868236068'
Test #4:
score: 10
Accepted
time: 1ms
memory: 5380kb
input:
13 1 1 13 1 2 3 1 3 3 1 3 4 2 1 13 4 1 4 12 2 13 3 12 3 3 2
output:
234399821
result:
ok single line: '234399821'
Test #5:
score: 10
Accepted
time: 1ms
memory: 5440kb
input:
13 2 3 2 1 12 2 13 2 2 2 1 2 13 3 12 4 13 4 3 4 3 1 12 3 1 3
output:
892522858
result:
ok single line: '892522858'
Test #6:
score: 10
Accepted
time: 8ms
memory: 5452kb
input:
81 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1
output:
152635587
result:
ok single line: '152635587'
Test #7:
score: 10
Accepted
time: 6ms
memory: 5376kb
input:
94 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1
output:
339459976
result:
ok single line: '339459976'
Test #8:
score: 10
Accepted
time: 7ms
memory: 5432kb
input:
96 1 2 1 3 1 4 1 1 2 2 2 3 2 4 2 1 3 2 3 3 3 4 3 1 4 2
output:
230028597
result:
ok single line: '230028597'
Test #9:
score: 10
Accepted
time: 8ms
memory: 5428kb
input:
83 1 2 1 3 1 4 1 1 2 2 2 3 2 4 2 1 3 2 3 3 3 4 3 1 4 2
output:
967250236
result:
ok single line: '967250236'
Test #10:
score: 10
Accepted
time: 12ms
memory: 5384kb
input:
100 67 1 26 4 12 4 11 4 30 4 29 1 1 4 13 3 30 1 64 2 63 1 20 2 32 4
output:
345132636
result:
ok single line: '345132636'
Extra Test:
score: 0
Extra Test Passed