矩阵——vijos1194 Domino

xiaoxiao2021-02-27  575

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

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define Ll long long using 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的总结》,都设了密码; 我感到恶心; 如果信息学竞赛要依靠垄断学习资源来获取胜利,那么中国会埋没很多人才(没指我);

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

转载请注明原文地址: https://www.6miu.com/read-146.html

最新回复(0)