SPOJ-VECTAR1 Matrices with XOR property(二维BIT暴力)

    xiaoxiao2021-03-25  89

    SPOJ-VECTAR1

    nm1nmA(i1^j1)>(i2^j2)A[i1][j1]>A[i1][j1]^,T,1n,m,T1000


    格子按异或值的大小分类,每个值所能选的数是固定的,总方案数为各类的排列数之积,接下来问题是怎么统计每个异或值所代表格子的个数。 没看T,随便写了个暴力就过了- -数据水 其实可以提前将询问读入,然后用二维BIT统计每个询问的该异或值个数,代码以后有空再写 据说还可以FWT,和数位DP 以后写(233)

    #include <cstdio> #include <queue> #include <vector> #include <cstring> #include <algorithm> using namespace std; const int maxn=2333; const int mod=1e9+7; const int mm=1e6+7; int n,m; int cnt[maxn]; int fact[mm]; int main() { fact[0]=1; for(long long i=1;i<=1e6;i++) fact[i]=i*fact[i-1]%mod; int T; scanf("%d",&T); while(T--) { memset(cnt,0,sizeof(cnt)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cnt[i^j]++; long long ans=1; for(int i=0;i<1024;i++) ans=ans*fact[cnt[i]]%mod; printf("%lld\n",ans); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-24260.html

    最新回复(0)