QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#424134 | #247. 州区划分 | QBF | 100 ✓ | 5622ms | 384516kb | C++14 | 1.8kb | 2024-05-28 22:19:02 | 2024-05-28 22:19:04 |
Judging History
answer
#include<bits/stdc++.h>
#define rg register int
#define ll long long
#define ci const int
using namespace std;
inline int read(){char ch(getchar());int res(0);while(ch<48||ch>57)ch=getchar();while(ch>=48&&ch<=57)res=(res<<1)+(res<<3)+(ch^48),ch=getchar();return res;}
ci N=22,mod=998244353,M=(1<<21)+5,K=N*N;
int n,lm,m,p,d[N],X[K],Y[K],cnt[M],w[N],F[N][M],G[N][M],tmp[M],s[M],inv[M],f[N];
int fd(ci x){
return x^f[x]?f[x]=fd(f[x]):x;
}
inline int qk(ll x,int y){
ll ans=1;
while(y){
if(y&1)ans=ans*x%mod;
x=x*x%mod,y>>=1;
}return ans;
}
inline void add(int &x,ci v){
x+=v,x-=x<mod?0:mod;
}
inline void sub(int &x,ci v){
x-=v,x+=x<0?mod:0;
}
inline void FWT(int *a,ci tp){
for(rg l=2;l<=lm;l<<=1)
for(rg i=0;i<lm;i+=l)
for(rg j=0;j^(l>>1);++j)
(tp?add:sub)(a[i+j+(l>>1)],a[i+j]);
}
int main(){
lm=1<<(n=read()),m=read(),p=read();
for(rg i=1;i<=m;++i)X[i]=read(),Y[i]=read();
for(rg i=1;i<=n;++i)w[i]=read();
for(rg i=0;i^lm;++i)cnt[i]=cnt[i>>1]+(i&1);
for(rg i=1;i^lm;++i){
for(rg j=1;j<=n;++j)if(i&(1<<j-1))s[i]+=w[j];
memset(d,0,sizeof(d));
for(rg j=1;j<=n;++j)f[j]=j;
for(rg j=1;j<=m;++j)if((i&(1<<X[j]-1))&&(i&(1<<Y[j]-1)))++d[X[j]],++d[Y[j]],f[fd(X[j])]=fd(Y[j]);
bool ok=0;
for(rg j=1;j<=n;++j)
if(d[j]&1){
ok=1;break;
}
for(rg las=0,j=1;j<=n;++j)
if(i&(1<<j-1)){
if(las&&(fd(las)^fd(j))){
ok=1;break;
}
las=j;
}
if(ok)G[cnt[i]][i]=qk(s[i],p);
inv[i]=qk(qk(s[i],mod-2),p);
}
for(rg i=1;i<=n;++i)FWT(G[i],1);
F[0][0]=1,FWT(F[0],1);
for(rg i=1;i<=n;++i){
memset(tmp,0,sizeof(tmp));
for(rg j=1;j<=i;++j)
for(rg k=0;k^lm;++k)
add(tmp[k],(ll)F[i-j][k]*G[j][k]%mod);
FWT(tmp,0);
for(rg j=0;j^lm;++j)
if(cnt[j]==i)
F[i][j]=(ll)tmp[j]*inv[j]%mod;
if(i^n)FWT(F[i],1);
}
printf("%d",F[n][lm-1]);
return 0;
}
詳細信息
Subtask #1:
score: 26
Accepted
Test #1:
score: 26
Accepted
time: 0ms
memory: 38592kb
input:
5 4 2 3 1 4 1 5 1 4 3 94 45 77 43 3
output:
652834711
result:
ok 1 number(s): "652834711"
Test #2:
score: 0
Accepted
time: 0ms
memory: 59152kb
input:
10 34 2 1 2 5 1 6 1 1 8 1 9 1 10 3 2 2 6 7 2 2 8 9 2 10 2 3 4 3 5 3 6 3 8 9 3 10 3 4 5 6 4 8 4 9 4 10 4 5 8 9 5 10 5 7 6 6 8 6 10 8 7 9 7 10 7 8 9 10 9 89 50 53 95 71 52 83 54 54 12
output:
748246143
result:
ok 1 number(s): "748246143"
Test #3:
score: 0
Accepted
time: 46ms
memory: 79884kb
input:
15 81 0 1 4 6 1 1 7 1 8 1 9 10 1 1 13 14 1 1 15 2 3 4 2 5 2 6 2 2 7 2 8 2 11 12 2 13 2 14 2 2 15 4 3 5 3 3 7 3 8 3 9 10 3 11 3 3 13 14 3 15 3 4 5 6 4 4 7 4 8 9 4 11 4 4 12 13 4 14 4 15 4 6 5 8 5 5 9 5 10 5 11 5 12 6 7 8 6 9 6 10 6 11 6 6 12 6 14 8 7 7 9 7 10 7 11 7 12 13 7 7 14 7 15 8 10 8 11 8 12 1...
output:
318194083
result:
ok 1 number(s): "318194083"
Test #4:
score: 0
Accepted
time: 47ms
memory: 79872kb
input:
15 70 1 1 2 3 1 4 1 1 5 6 1 8 1 1 9 1 12 1 13 1 15 2 3 2 4 2 5 2 6 2 7 2 9 2 11 12 2 13 2 2 14 3 5 6 3 3 8 9 3 11 3 12 3 3 13 4 5 8 4 10 4 4 12 13 4 6 5 7 5 5 8 9 5 11 5 5 13 14 5 6 7 6 8 6 9 10 6 6 12 6 13 6 14 15 6 7 8 7 9 7 10 12 7 7 13 14 7 9 8 10 8 12 8 14 8 15 8 9 11 13 9 14 9 9 15 10 11 13 10...
output:
92331988
result:
ok 1 number(s): "92331988"
Test #5:
score: 0
Accepted
time: 43ms
memory: 79808kb
input:
15 67 2 1 2 1 3 5 1 1 6 1 8 11 1 12 1 1 13 15 1 2 5 2 6 8 2 2 10 11 2 2 12 13 2 2 14 4 3 9 3 3 10 11 3 15 3 5 4 7 4 8 4 10 4 11 4 4 12 13 4 14 4 5 6 5 8 9 5 10 5 12 5 13 5 14 5 6 7 6 8 6 9 6 10 6 11 6 14 7 8 10 7 11 7 12 7 7 15 9 8 8 10 13 8 8 14 10 9 9 11 9 12 13 9 14 9 15 9 13 10 15 10 12 11 14 11...
output:
237027263
result:
ok 1 number(s): "237027263"
Subtask #2:
score: 29
Accepted
Dependency #1:
100%
Accepted
Test #6:
score: 29
Accepted
time: 4095ms
memory: 382904kb
input:
21 146 0 1 6 7 1 1 8 1 9 10 1 1 11 1 14 1 15 1 16 18 1 1 19 1 21 2 3 4 2 5 2 2 7 2 8 2 9 2 12 13 2 2 15 2 17 2 18 2 19 2 20 2 21 4 3 5 3 3 6 3 7 8 3 3 10 12 3 3 13 3 15 3 16 3 18 20 3 3 21 4 5 4 6 4 8 9 4 12 4 13 4 17 4 18 4 20 4 4 21 5 6 5 7 5 8 5 9 12 5 13 5 5 14 5 15 5 17 18 5 5 19 20 5 5 21 6 8 ...
output:
739452507
result:
ok 1 number(s): "739452507"
Test #7:
score: 0
Accepted
time: 5622ms
memory: 383532kb
input:
21 209 0 15 17 18 21 8 20 7 20 11 17 11 13 12 18 2 13 19 20 4 8 6 13 3 20 5 10 4 20 1 5 7 13 5 7 4 10 4 9 6 7 4 18 8 17 1 11 3 13 11 19 2 15 3 8 14 19 5 16 2 10 13 21 4 21 7 11 5 20 3 7 6 19 9 17 13 16 5 12 1 6 3 15 6 16 2 5 4 5 8 16 1 3 1 16 1 14 2 9 7 16 10 16 2 18 13 15 7 10 11 12 10 20 6 10 1 20...
output:
835537739
result:
ok 1 number(s): "835537739"
Test #8:
score: 0
Accepted
time: 4068ms
memory: 384020kb
input:
21 146 0 2 1 1 4 5 1 1 7 1 8 1 9 13 1 14 1 15 1 16 1 1 17 18 1 1 19 2 3 2 4 5 2 2 6 7 2 2 8 9 2 2 10 2 11 2 12 13 2 15 2 2 18 19 2 2 20 21 2 5 3 3 6 7 3 3 10 13 3 14 3 15 3 3 16 3 17 3 20 21 3 4 7 4 9 10 4 4 11 12 4 4 13 4 16 4 17 18 4 4 20 21 4 5 7 8 5 5 9 13 5 5 14 15 5 5 16 5 17 5 18 5 20 21 5 7 ...
output:
873127243
result:
ok 1 number(s): "873127243"
Test #9:
score: 0
Accepted
time: 5540ms
memory: 384516kb
input:
21 205 0 4 10 8 15 8 16 6 21 1 5 9 15 1 7 12 18 2 19 5 10 7 18 8 10 11 20 3 11 18 20 4 20 15 17 15 19 3 5 2 18 19 20 8 19 1 3 8 13 7 21 10 17 16 17 5 13 15 21 5 6 9 20 1 16 2 13 16 20 10 19 10 11 1 11 2 21 13 20 2 12 14 19 2 3 3 9 4 16 4 14 9 13 10 18 4 11 16 21 4 9 7 14 3 19 14 18 7 20 3 10 15 16 5...
output:
38084232
result:
ok 1 number(s): "38084232"
Subtask #3:
score: 23
Accepted
Dependency #1:
100%
Accepted
Test #10:
score: 23
Accepted
time: 4291ms
memory: 383392kb
input:
21 159 1 2 1 3 1 5 1 7 1 1 9 11 1 12 1 13 1 17 1 18 1 1 19 20 1 2 3 2 4 5 2 7 2 2 8 2 10 12 2 13 2 2 14 15 2 2 18 19 2 20 2 21 2 3 4 5 3 6 3 7 3 3 8 9 3 3 10 3 11 3 12 3 13 14 3 3 15 16 3 18 3 3 19 3 21 5 4 6 4 4 7 8 4 9 4 4 11 4 14 4 15 16 4 17 4 19 4 21 4 5 6 5 7 5 9 10 5 11 5 12 5 5 14 15 5 5 17 ...
output:
211589144
result:
ok 1 number(s): "211589144"
Test #11:
score: 0
Accepted
time: 5573ms
memory: 384036kb
input:
21 208 1 12 15 5 13 15 18 2 11 12 19 3 11 11 15 9 11 5 14 11 13 7 12 1 5 3 5 8 13 14 18 9 21 2 4 1 12 3 7 9 10 12 20 5 15 10 20 15 19 16 18 18 20 13 16 3 9 16 20 6 13 11 16 15 17 1 20 4 6 11 21 1 3 1 15 8 21 13 19 7 21 17 19 4 5 10 11 11 17 3 20 7 10 12 18 7 9 5 16 11 12 3 12 14 19 8 20 12 21 7 13 5...
output:
56778317
result:
ok 1 number(s): "56778317"
Test #12:
score: 0
Accepted
time: 4126ms
memory: 384180kb
input:
21 137 1 3 1 1 4 5 1 7 1 8 1 1 11 1 12 13 1 16 1 1 17 1 19 20 1 21 1 2 3 2 4 2 5 7 2 8 2 9 2 10 2 2 11 12 2 2 13 17 2 18 2 2 19 3 4 3 6 3 13 14 3 15 3 17 3 3 18 19 3 21 3 4 5 6 4 7 4 4 8 9 4 10 4 4 11 4 12 4 14 15 4 16 4 4 19 4 20 6 5 7 5 8 5 9 5 10 5 5 11 12 5 13 5 5 15 5 17 5 18 5 19 21 5 7 6 6 10...
output:
490355723
result:
ok 1 number(s): "490355723"
Test #13:
score: 0
Accepted
time: 5372ms
memory: 383692kb
input:
21 205 1 16 18 6 14 10 14 1 2 12 14 4 8 12 16 1 4 2 15 14 16 4 11 15 17 4 7 3 16 11 17 15 21 13 20 2 21 6 19 13 14 20 21 17 19 9 19 10 20 7 9 11 15 7 13 8 14 4 15 8 13 5 14 3 11 8 9 10 21 3 10 14 18 5 16 5 20 17 18 3 17 1 8 5 10 13 15 3 9 7 21 14 20 1 20 8 10 1 13 5 17 13 16 15 18 4 10 18 21 1 5 18 ...
output:
748937625
result:
ok 1 number(s): "748937625"
Subtask #4:
score: 22
Accepted
Dependency #1:
100%
Accepted
Test #14:
score: 22
Accepted
time: 5518ms
memory: 383248kb
input:
21 207 2 2 6 9 20 2 11 11 19 6 9 7 20 12 19 12 18 15 18 1 4 5 8 20 21 17 18 5 9 12 14 4 14 15 17 18 20 3 18 11 13 4 17 12 15 2 19 10 20 11 17 5 7 3 4 14 21 9 21 13 17 9 13 13 20 3 17 2 17 2 8 17 20 1 17 9 19 2 12 4 9 14 15 14 18 6 15 16 20 3 8 12 17 5 10 9 10 8 15 4 16 2 21 5 13 9 15 1 21 2 10 8 11 ...
output:
317043733
result:
ok 1 number(s): "317043733"
Test #15:
score: 0
Accepted
time: 5579ms
memory: 384264kb
input:
21 205 2 6 14 7 19 2 3 6 7 5 18 1 10 3 19 16 18 4 15 10 16 13 21 9 11 12 19 13 19 1 18 15 16 7 11 2 11 9 19 4 13 14 21 4 17 6 8 11 18 12 14 15 19 11 14 2 16 4 11 10 19 10 13 10 21 5 6 2 13 4 21 4 5 9 10 7 14 1 15 4 16 8 11 5 19 5 21 13 16 1 6 4 20 16 17 5 11 13 14 5 9 3 11 11 20 6 15 8 15 6 11 5 10 ...
output:
364004893
result:
ok 1 number(s): "364004893"
Extra Test:
score: 0
Extra Test Passed