zoukankan      html  css  js  c++  java
  • vijosP1194 Domino

    vijosP1194 Domino

    链接:https://vijos.org/p/1194

    【思路】

      矩阵相乘。

      参考Matrix67的文章:

      

    【代码】

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #define FOR(a,b,c) for(int a=(b);a<(c);a++)
     5 using namespace std;
     6 
     7 const int maxn = 40;
     8 const int ag[]={0,3,6,12,15,24,27,30};
     9 typedef long long LL;
    10 
    11 int n,m,MOD;
    12 
    13 struct Matrix{
    14     int r,c;
    15     LL N[maxn][maxn];
    16     void init(int r,int c) {
    17         this->r=r, this->c=c;
    18         memset(N,0,sizeof(N));
    19     }
    20     Matrix operator*(Matrix& B)const{
    21         Matrix A=*this,C;
    22         C.init(A.r,B.c);
    23         for(int i=0;i<C.r;i++)
    24            for(int j=0;j<C.c;j++)
    25               for(int k=0;k<A.c;k++)
    26                  C.N[i][j] = (C.N[i][j]+A.N[i][k]*B.N[k][j])%MOD;
    27         return C;
    28     }
    29     Matrix pow(int p) {
    30         Matrix tmp=*this;
    31         Matrix ans;
    32         ans.init(r,r);
    33         for(int i=0;i<r;i++) ans.N[i][i]=1;
    34         while(p) {
    35             if(p&1) ans=ans*tmp;
    36             tmp=tmp*tmp;
    37             p>>=1;
    38         }
    39         return ans;
    40     }
    41 };
    42 int main() {
    43     scanf("%d%d%d",&n,&m,&MOD);
    44     Matrix ans;
    45     int all=1<<m;
    46     ans.init(all,all);
    47     for(int i=0;i<all;i++)    
    48        for(int j=0;j<all;j++)
    49            if( ((~i)&j) == ((~i)&(all-1))) {
    50                   int l=0;
    51                   for(int r=0;r<=8;r++) l=l||((i&j)==ag[r]);
    52                   ans.N[i][j]=l;
    53            }
    54     ans=ans.pow(n);
    55     printf("%d",ans.N[all-1][all-1]);
    56     return 0;
    57 } 
  • 相关阅读:
    乐动力APP案例
    四则运算题目自动生成
    第0次作业
    CMDB整体项目梳理(1)
    cmdb项目准备
    DjangoAgain CBV与FBV
    Django ORM不完全操作
    Django 查漏补缺记录
    DjangoAgain_用小程序理解web框架
    DjangoAgain_url路由系统
  • 原文地址:https://www.cnblogs.com/lidaxin/p/4922609.html
Copyright © 2011-2022 走看看