2017.8.5 One-Dimensional 思考记录
来源:互联网 发布:淘宝楼梯实木踏步板 编辑:程序博客网 时间:2024/05/22 13:40
这题递推式已经给了,就考虑怎么优化就可以了
对于a*b+c*d+e*f的形式直接拆到两个矩阵里即可
由于乘的时候实际是遍历每个项,所以不参与运算的设为0即可
码(from某知名选手):
#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m,ta,tb,tc,mod;struct jz{int p[99][99];}a,b;jz operator *(const jz &x,const jz &y){jz c;memset(c.p,0,sizeof(c.p));for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)for(int k=1;k<=n;k++)c.p[i][k]+=x.p[i][j]*y.p[j][k]; for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) c.p[i][j]%=mod; return c;}int main(){while (scanf("%d%d%d%d%d%d",&n,&mod,&ta,&tb,&tc,&m) && n){ int i; for (i=1; i<=n; i++) scanf("%d",&a.p[1][i]); memset(b.p,0,sizeof(b.p)); for (i=1; i<=n; i++){ if (i<n) b.p[i][i+1]=ta; b.p[i][i]=tb; if (i>1) b.p[i][i-1]=tc; } for (; m; m>>=1,b=b*b) if (m&1) a=a*b; for (i=1; i<=n; i++) printf("%d%c",a.p[1][i],(i<n)?' ':'\n'); } }
阅读全文
0 0
- 2017.8.5 One-Dimensional 思考记录
- AT1 one-dimensional objects
- bzoj4688 One-Dimensional
- [数据结构]One-Dimensional Life Game
- A. One-dimensional Japanese Crossword
- One-Dimensional Battle Ships CodeForces
- ZOJ--3992--One-Dimensional Maze
- Day2 - C - One-Dimensional Cellular Automaton
- CodeForces #Pi D.One-Dimensional Battle Ships
- codeforces 567D. One-Dimensional Battle Ships
- set codeforces567D One-Dimensional Battle Ships
- Codeforces 567D One-Dimensional Battle Ships
- CF D. One-Dimensional Battle Ships
- CodeForces 567D One-Dimensional Battle Ships
- bzoj 4688: One-Dimensional 矩阵乘法
- Codeforce 721A One-dimensional Japanese Crossword
- CodeForces 721A One-dimensional Japanese Crossword
- Codeforces 721A-One-dimensional Japanese Crossword
- 【转】Qt中实现将float类型…
- Ogre坐标系,向量之间的转换
- 齐次坐标的理解【转】【精辟】
- 由摄像机的内参K计算视景体—…
- opencv轮廓高级应用(轮廓匹…
- 2017.8.5 One-Dimensional 思考记录
- 欧拉-拉格朗日方程【转】
- 陈纪修老师《数学分析》 第12章:多元函数微分学 笔记
- Matlab 图像处理相关函数命…
- 2017百度之星资格赛题解
- 我已率先抢占昵称,我的昵称独一无…
- C_kbhit()和getch()函数的使用
- 混合高斯模型的matlab代码剖…
- ThinkPHP去除url中的index.php