QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#750938 | #9735. Japanese Bands | oipotato | RE | 0ms | 3836kb | C++23 | 1.7kb | 2024-11-15 16:26:06 | 2024-11-15 16:26:09 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=1;i<=n;i++)
#define pb push_back
#define mp make_pair
#define data dataa
using LL=long long;
using ULL=unsigned long long;
using LD=long double;
const int MOD=int(1e9)+7;
int inv[50],ans[1<<20],a[410],n1,n2,k,m;
void update(int&x,int y){x=(x+y)%MOD;}
int mypow(int x,int n){int res=1;for(;n;n>>=1,x=LL(x)*x%MOD)if(n&1)res=LL(res)*x%MOD;return res;}
int C(int n,int m)
{
int res=1;
for(int i=n;i>=n-m+1;i--)res=LL(res)*i%MOD;
rep(i,m)res=LL(res)*inv[i]%MOD;
return res;
}
int cal(int n,int m)
{
if(n<m)return 0;
return C(n-1,m-1);
}
int main()
{
int T;
inv[0]=1;
rep(i,20)inv[i]=LL(inv[i-1])*mypow(i,MOD-2)%MOD;
for(scanf("%d",&T);T--;)
{
scanf("%d%d%d%d",&n1,&n2,&m,&k);
rep(i,k)
{
int x,y;scanf("%d%d",&x,&y);
a[i]=(1<<(x-1))|(1<<(y-1));
}
for(int i=0;i<(1<<m);i++)
{
bool flag=1;
rep(j,k)if(!(a[j]&i)){flag=0;break;}
ans[i]=flag*cal(n2,__builtin_popcount(i));
}
rep(i,m)rep(j,(1<<m))if(!((j>>(i-1))&1))update(ans[j],ans[j^(1<<(i-1))]);
int allans=0;
for(int i=0;i<(1<<m);i++)
{
bool flag=1;
int msk=0;
rep(j,k)
{
int x=a[j]&i;
if(!x){flag=0;break;}
if((a[j]&-a[j])==a[j]){msk|=a[j];continue;}
if((x&-x)==x)msk|=a[j]^x;
}
if(!flag)continue;
update(allans,LL(cal(n1,__builtin_popcount(i)))*ans[msk]%MOD);
}
printf("%d\n",allans);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3836kb
input:
3 2 3 3 3 2 3 1 1 2 3 2 2 2 1 1 1 1 1 10 2 1 2 1 3
output:
6 4 0
result:
ok 3 lines
Test #2:
score: -100
Runtime Error
input:
500 481199252 336470888 8 58 4 7 7 6 4 7 2 6 2 6 2 7 8 3 8 7 8 1 2 6 2 6 1 2 1 5 3 1 6 4 2 4 4 7 2 6 2 3 7 1 4 4 5 1 2 7 6 7 8 1 8 7 5 6 4 2 4 2 8 5 5 4 6 8 5 6 3 8 1 7 1 6 7 1 5 6 6 3 1 1 2 7 3 3 1 5 5 5 8 7 3 4 6 3 8 8 7 4 1 6 2 1 8 7 4 5 2 7 3 5 2 6 4 5 4 3 2 6 2 2 2 1 1 1 500330171 987581927 10 ...