QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#346485 | #8323. 虫洞 | Crysfly# | 24 | 22ms | 3828kb | C++17 | 3.3kb | 2024-03-08 16:28:25 | 2024-07-04 03:27:32 |
Judging History
answer
// what is matter? never mind.
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
//#pragma GCC target("sse,sse2,sse3,sse4,popcnt,abm,mmx,avx,avx2")
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rep(i,a,b) for(int i=(a);i>=(b);--i)
#define ll long long
#define int long long
#define ull unsigned long long
#define SZ(x) ((int)((x).size()))
#define ALL(x) (x).begin(),(x).end()
using namespace std;
inline int read()
{
char c=getchar();int x=0;bool f=0;
for(;!isdigit(c);c=getchar())f^=!(c^45);
for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);
if(f)x=-x;return x;
}
#define mod 998244353
struct modint{
int x;
modint(int o=0){x=o;}
modint &operator = (int o){return x=o,*this;}
modint &operator +=(modint o){return x=x+o.x>=mod?x+o.x-mod:x+o.x,*this;}
modint &operator -=(modint o){return x=x-o.x<0?x-o.x+mod:x-o.x,*this;}
modint &operator *=(modint o){return x=1ll*x*o.x%mod,*this;}
modint &operator ^=(int b){
modint a=*this,c=1;
for(;b;b>>=1,a*=a)if(b&1)c*=a;
return x=c.x,*this;
}
modint &operator /=(modint o){return *this *=o^=mod-2;}
friend modint operator +(modint a,modint b){return a+=b;}
friend modint operator -(modint a,modint b){return a-=b;}
friend modint operator *(modint a,modint b){return a*=b;}
friend modint operator /(modint a,modint b){return a/=b;}
friend modint operator ^(modint a,int b){return a^=b;}
friend bool operator ==(modint a,int b){return a.x==b;}
friend bool operator !=(modint a,int b){return a.x!=b;}
bool operator ! () {return !x;}
modint operator - () {return x?mod-x:0;}
bool operator <(const modint&b)const{return x<b.x;}
};
inline modint qpow(modint x,int y){return x^y;}
vector<modint> fac,ifac,iv;
inline void initC(int n)
{
if(iv.empty())fac=ifac=iv=vector<modint>(2,1);
int m=iv.size(); ++n;
if(m>=n)return;
iv.resize(n),fac.resize(n),ifac.resize(n);
For(i,m,n-1){
iv[i]=iv[mod%i]*(mod-mod/i);
fac[i]=fac[i-1]*i,ifac[i]=ifac[i-1]*iv[i];
}
}
inline modint C(int n,int m){
if(m<0||n<m)return 0;
return initC(n),fac[n]*ifac[m]*ifac[n-m];
}
inline modint sign(int n){return (n&1)?(mod-1):(1);}
#define fi first
#define se second
#define pb push_back
#define mkp make_pair
typedef pair<int,int>pii;
typedef vector<int>vi;
#define maxn 1005
#define inf 0x3f3f3f3f
int n,m,k,res,O;
vi p[233];
void chk(){
// For(x,1,k)For(i,0,n-1)cout<<p[x][i]<<" \n"[i==n-1];
For(i,0,n-1){
For(x,1,k)For(y,1,k){
int t1=p[x][i]; t1=p[y][t1];
int t2=p[y][i]; t2=p[x][t2];
if(t1!=t2)return;
}
}
res+=1;
}
void dfs(int u){
if(u==k+1){
chk();
return;
}
For(i,0,n-1)p[u][i]=i;
do{
dfs(u+1);
}while(next_permutation(ALL(p[u])));
}
int vis[maxn];
signed main()
{
O=read(),n=read(),m=read(),k=read();
initC(n+1);
if(O>=5 && O<=6){
cout<<fac[n].x;
exit(0);
}
k+=m;
For(i,1,k) p[i].resize(n);
For(i,1,n*m){
int u=read(),v=read(),w=read();
p[w][u-1]=v-1;
}
if(m==1 && k==1){
modint res=1;
For(i,0,n-1) if(!vis[i]) {
int len=0,u=i;
while(!vis[u]) len++,vis[u]=1,u=p[1][u];
res*=fac[len];
}
cout<<res.x;
exit(0);
}
dfs(m+1);
cout<<res;
return 0;
}
/*
1 4 1 1
1 2 1
2 1 1
3 4 1
4 3 1
1 8 48 504 4680
*/
详细
Test #1:
score: 4
Accepted
time: 0ms
memory: 3768kb
input:
1 4 1 2 2 2 1 3 3 1 4 4 1 1 1 1
output:
120
result:
ok single line: '120'
Test #2:
score: 4
Accepted
time: 1ms
memory: 3784kb
input:
2 5 2 2 4 1 1 2 5 2 1 4 2 5 3 2 1 4 1 4 1 2 3 2 2 2 5 1 5 3 1 3 2 1
output:
36
result:
ok single line: '36'
Test #3:
score: 4
Accepted
time: 22ms
memory: 3776kb
input:
3 5 3 3 1 1 2 2 2 2 5 5 3 4 4 2 4 4 3 1 1 1 5 5 2 4 4 1 3 3 2 2 2 3 1 1 3 2 2 1 5 3 1 3 3 3 3 5 1
output:
384
result:
ok single line: '384'
Test #4:
score: 4
Accepted
time: 16ms
memory: 3828kb
input:
4 5 3 3 5 4 1 5 5 2 5 5 3 2 2 1 2 2 2 1 1 3 2 2 3 4 4 2 1 1 2 3 3 2 1 5 1 4 1 1 3 3 1 4 4 3 3 3 3
output:
216
result:
ok single line: '216'
Test #5:
score: 4
Accepted
time: 0ms
memory: 3812kb
input:
5 1996 0 1
output:
348407495
result:
ok single line: '348407495'
Test #6:
score: 4
Accepted
time: 0ms
memory: 3572kb
input:
6 1997 0 1
output:
991697827
result:
ok single line: '991697827'
Test #7:
score: 0
Time Limit Exceeded
input:
7 97 1 1 97 64 1 49 11 1 1 1 1 89 89 1 48 40 1 18 76 1 53 53 1 50 50 1 45 45 1 82 95 1 62 9 1 72 72 1 78 78 1 52 24 1 91 91 1 66 66 1 36 36 1 85 85 1 22 65 1 30 30 1 57 57 1 95 19 1 67 67 1 41 41 1 34 13 1 65 4 1 5 70 1 23 23 1 92 92 1 31 8 1 4 22 1 35 35 1 7 7 1 75 75 1 12 12 1 90 90 1 37 44 1 19 8...
output:
result:
Test #8:
score: 0
Time Limit Exceeded
input:
8 96 1 1 74 63 1 57 57 1 21 21 1 22 22 1 55 55 1 85 6 1 92 3 1 62 90 1 12 12 1 70 4 1 89 35 1 6 28 1 61 80 1 23 23 1 66 66 1 31 87 1 80 10 1 38 47 1 75 76 1 50 37 1 95 68 1 56 56 1 20 20 1 1 45 1 18 18 1 91 91 1 64 85 1 60 79 1 19 2 1 30 65 1 40 40 1 96 67 1 34 34 1 87 31 1 94 94 1 52 92 1 16 41 1 2...
output:
result:
Test #9:
score: 0
Time Limit Exceeded
input:
9 98 10 1 49 47 8 25 25 2 72 72 3 70 14 10 57 57 1 55 55 3 68 68 3 66 66 9 6 6 5 50 56 8 25 25 3 3 3 6 32 32 2 63 63 1 84 84 8 91 91 9 21 21 8 2 2 7 74 74 2 14 14 5 93 93 9 92 92 3 45 45 6 38 38 3 86 86 7 57 57 5 7 7 1 52 52 3 66 66 1 27 27 9 3 3 3 91 91 2 72 72 10 5 5 8 63 63 2 45 45 8 44 44 7 20 2...
output:
result:
Test #10:
score: 0
Time Limit Exceeded
input:
10 97 9 1 83 83 8 66 66 6 82 82 3 86 86 2 41 25 9 49 49 5 53 53 2 29 29 7 43 43 5 80 80 3 36 97 8 47 47 7 71 71 4 75 46 3 82 82 1 70 70 2 64 64 9 49 49 2 23 23 8 17 17 9 38 38 1 37 37 5 28 28 1 90 90 6 26 26 9 56 56 5 7 7 1 43 43 4 15 15 7 21 21 5 39 39 6 7 7 8 94 94 4 42 42 6 16 75 6 44 44 6 16 75 ...
output:
result:
Test #11:
score: 0
Runtime Error
input:
11 99 6 933 84 84 3 22 12 1 80 80 6 89 89 2 14 14 2 34 34 2 4 4 3 33 33 3 91 36 2 44 39 6 18 18 3 9 9 4 85 85 3 53 53 3 61 61 5 76 24 1 89 89 4 9 9 2 8 8 2 30 30 1 27 27 1 71 71 2 77 77 4 85 85 5 62 62 3 50 50 3 64 64 4 7 7 2 93 93 1 11 11 3 91 91 4 16 16 1 34 34 4 40 23 3 32 32 3 33 33 4 59 59 3 60...
output:
result:
Test #12:
score: 0
Runtime Error
input:
12 100 9 914 62 62 2 10 79 6 23 23 4 54 54 7 91 91 2 38 38 8 18 18 6 82 10 3 81 81 7 45 45 1 77 77 1 59 59 6 65 84 7 94 75 3 85 85 4 57 57 7 84 84 9 18 18 9 1 1 2 7 7 6 31 31 5 2 2 1 75 75 4 29 29 6 84 30 1 53 53 9 81 81 8 88 88 8 89 89 3 22 22 3 64 64 4 15 15 2 88 88 2 74 74 5 95 95 7 43 43 9 19 92...
output:
result:
Test #13:
score: 0
Runtime Error
input:
13 99 9 908 80 80 8 83 83 1 4 4 1 52 52 4 18 18 8 58 58 1 78 78 4 98 98 3 68 68 3 83 83 9 45 45 2 70 70 6 73 73 1 21 21 9 1 1 8 46 6 7 26 26 3 64 64 6 93 93 4 65 65 6 16 16 5 29 29 1 90 90 8 42 42 4 89 89 2 74 74 9 37 37 9 72 72 7 67 67 6 27 84 6 9 9 2 53 49 8 94 94 7 56 56 6 54 54 2 67 67 3 18 18 2...
output:
result:
Test #14:
score: 0
Runtime Error
input:
14 100 9 856 85 85 4 78 78 3 34 34 8 74 74 3 71 71 5 97 97 4 65 65 5 61 61 1 1 51 4 79 79 7 94 94 5 47 47 5 71 71 9 63 63 3 34 34 1 97 97 6 53 53 9 17 17 8 12 42 8 11 11 1 10 10 3 23 23 6 33 33 7 77 77 1 25 25 3 67 67 9 81 81 2 42 42 2 1 1 9 36 43 4 90 90 7 54 54 6 62 62 7 40 41 6 85 85 5 41 41 4 52...
output:
result:
Test #15:
score: 0
Runtime Error
input:
15 99 0 999999051080524
output:
result:
Test #16:
score: 0
Runtime Error
input:
16 99 0 999999708304723
output:
result:
Test #17:
score: 0
Runtime Error
input:
17 97 9 999998575885466 6 6 3 85 85 3 53 53 4 66 66 3 30 30 2 25 25 8 41 55 1 60 60 2 78 78 4 34 34 1 71 71 3 72 72 9 57 57 5 81 20 1 18 18 9 40 40 9 74 74 2 46 46 7 63 63 2 37 37 1 95 95 8 84 84 7 92 92 3 47 47 8 28 28 3 60 60 3 55 55 7 7 7 9 24 24 2 57 57 3 85 85 4 17 17 4 34 34 3 82 82 7 3 30 1 4...
output:
result:
Test #18:
score: 0
Runtime Error
input:
18 98 8 999999221481775 95 95 6 86 86 6 95 95 7 15 15 8 42 42 8 52 52 2 24 24 8 35 35 6 37 37 7 2 2 3 62 62 7 50 50 3 19 19 4 76 76 2 14 14 6 95 95 1 9 9 1 37 37 2 58 58 5 43 43 6 44 44 7 60 60 7 7 81 8 93 68 5 88 88 3 63 63 1 5 5 8 43 43 3 94 94 8 4 4 7 94 94 4 32 32 2 26 78 5 85 60 5 46 3 5 96 96 ...
output:
result:
Test #19:
score: 0
Runtime Error
input:
19 98 10 999998787947143 85 85 1 93 93 5 79 29 10 73 73 10 80 80 2 10 10 10 36 36 5 37 37 5 66 66 2 10 10 8 29 79 8 74 74 3 71 71 1 95 95 2 13 13 5 64 64 10 10 10 3 47 47 2 53 53 6 30 30 5 27 27 6 54 39 9 36 36 2 41 61 8 17 55 8 49 49 10 98 98 1 37 33 8 36 36 1 75 75 7 31 31 3 45 45 8 74 74 6 13 13 ...
output:
result:
Test #20:
score: 0
Runtime Error
input:
20 1998 997 82 1362 1362 148 1559 1559 279 594 594 203 63 63 272 1170 1170 713 1501 1501 474 879 879 956 255 255 693 1818 1818 612 1968 1968 586 417 417 823 1565 1565 786 1586 1586 667 1780 1780 974 1208 1208 718 696 696 73 1188 1188 739 870 870 290 1797 1797 830 1904 1904 511 186 186 98 991 991 715...
output:
result:
Test #21:
score: 0
Runtime Error
input:
21 1999 999 92 814 814 865 526 526 225 565 565 653 1861 1861 598 781 781 191 1670 1670 900 712 712 883 900 900 677 1503 1503 652 969 969 210 1204 1204 46 336 336 836 1439 1439 599 773 773 303 887 887 174 1260 1260 465 705 705 846 460 460 701 1712 1712 168 1012 1012 596 1160 1160 547 55 55 353 1148 1...
output:
result:
Test #22:
score: 0
Runtime Error
input:
22 2000 999 999998064966521 353 353 378 1290 1290 712 1752 1752 841 61 61 404 1847 1847 264 1187 1187 671 519 519 694 1985 1985 800 591 591 558 648 648 746 1398 1398 876 401 401 996 1050 1050 714 841 841 70 1657 1657 149 1108 1108 672 669 669 508 861 861 305 1445 1445 685 1121 1121 32 1616 1616 586 ...
output:
result:
Test #23:
score: 0
Runtime Error
input:
23 1998 1000 999997365774803 524 524 528 1774 1774 517 635 635 172 1914 1914 242 1727 1727 876 1202 1202 227 841 841 219 1348 1348 88 38 38 326 246 246 485 1182 1182 492 860 860 290 288 288 596 1285 1285 389 31 31 777 1042 1042 522 1453 1453 168 43 43 64 1255 1255 375 1616 1616 317 1314 1314 942 292...
output:
result:
Test #24:
score: 0
Runtime Error
input:
24 1997 998 999998752894888 762 762 692 128 128 951 1389 1389 894 914 914 790 668 668 65 1632 1632 372 828 828 542 788 788 136 1132 1132 689 1911 1911 376 326 326 604 1581 1581 708 1603 1603 197 954 954 864 1885 1885 597 1090 1090 214 770 770 785 880 880 722 1109 1109 33 1423 1423 80 855 855 429 198...
output:
result:
Test #25:
score: 0
Runtime Error
input:
25 1999 997 999996902277957 10 10 119 1934 1934 983 1825 1825 193 1483 1483 320 1010 1010 349 717 717 990 577 577 254 975 975 448 1366 1366 39 1515 1515 30 446 446 194 580 580 476 1092 1092 6 119 119 906 778 778 651 1444 1444 446 819 819 123 1566 1566 61 855 855 256 1312 1312 717 1303 1303 821 1456 ...