矩阵——vijos1194 Domino

来源:互联网 发布:java牛顿迭代法解方程 编辑:程序博客网 时间:2024/06/09 15:18

https://vijos.org/p/1194
首先感谢Matrix67
这道题目在《十个利用矩阵乘法解决的经典题目》里面有详细的解答;
这种方法巧得不行;
这里写图片描述
代码

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define Ll long longusing namespace std;struct jv{    int n,m;    int a[32][32];    jv(){n=m=0;memset(a,0,sizeof a);}}a;int v[10]={0,3,6,12,15,24,27,30};//这个是竖放的各种结果 int n,m,mo;jv cheng(jv a,jv b){    jv c;c.n=a.n;c.m=b.m;    for(int i=0;i<=c.n;i++)        for(int k=0;k<=a.m;k++)if(a.a[i][k])            for(int j=0;j<=c.m;j++)                c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mo;    return c;}jv ksm(int k){    jv ans=a,c=a;    for(k--;k;k>>=1,c=cheng(c,c))        if(k&1)ans=cheng(ans,c);    return ans;}int main(){    scanf("%d%d%d",&n,&m,&mo);    m=1<<m;m--;    a.n=a.m=m;    for(int i=0;i<=m;i++)    for(int j=0;j<=m;j++)    if(((~i)&j)==((~i)&m))//横放         for(int k=0;k<8;k++)a.a[i][j]=a.a[i][j]||(i&j)==v[k];//竖放     printf("%d",ksm(n).a[m][m]);}

这里谈谈我对资源共享的想法;
我们绍兴一中,是不允许资源在互联网上共享的;
我们学生自己做的ppt,是不可以在互联网上共享的;
虽然,我们的PPT大都是从互联网上各个博客里面取精华而合成的;
我们的原创题时不允许在互联网上共享的;
虽然,这些题目很都在bzoj上有基本一样的题目和数据;

我以前学莫比乌斯,真的是一脸懵逼;
然后看到了popoqqq的ppt,才如梦初醒;
现在做矩阵,一头雾水;
看到Matrix67的论文,才恍然大悟;

我们在学习时,是各地的神犇的资源救了我们;
为什么我们有发现有创新的时候,要藏着掖着;
我上次看到了某中学的学生的博客,凡是《对于XXXX的总结》,都设了密码;
我感到恶心;
如果信息学竞赛要依靠垄断学习资源来获取胜利,那么中国会埋没很多人才(没指我);

不过从国人的素质角度来考虑的话,自己有的资源不外传好像是必然的

1 0