bzoj4688 One-Dimensional
来源:互联网 发布:软件拆卸 编辑:程序博客网 时间:2024/05/10 02:40
【题意】略
【数据范围】n<=50,m<=1000,T<=10^9
【思路】考虑到是层层线性递推,矩阵乘法即可。
【时间复杂度】O(n^3 log T)
#include<cstdio>#include<cstring>#include<algorithm>#define N 60using namespace std;int n, mod, A, B, C, m, a[N][N], b[N][N], c[N][N], w[N], ans[N];int main(){scanf("%d%d%d%d%d%d", &n, &mod, &A, &B, &C, &m);while(n){for(int i=1; i<=n; i++)scanf("%d", &w[i]);if(!m){for(int i=1; i<=n-1; i++)printf("%d ", w[i]); printf("%d\n", w[n]);scanf("%d%d%d%d%d%d", &n, &mod, &A, &B, &C, &m);continue;}memset(a, 0, sizeof(a));for(int i=1; i<=n; i++){if(i>=2)a[i][i-1]=C; a[i][i]=B;if(i<=n-1)a[i][i+1]=A;}memcpy(b, a, sizeof(b)); a[1][1]=-1;while(m){if(m&1){if(a[1][1]==-1)memcpy(a, b, sizeof(a));else{for(int i=1; i<=n; i++)for(int j=1; j<=n; j++){c[i][j]=0;for(int k=1; k<=n; k++)c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mod;}memcpy(a, c, sizeof(c));}}for(int i=1; i<=n; i++)for(int j=1; j<=n; j++){c[i][j]=0;for(int k=1; k<=n; k++)c[i][j]=(c[i][j]+b[i][k]*b[k][j])%mod;}memcpy(b, c, sizeof(b));m>>=1;}for(int i=1; i<=n; i++){ans[i]=0;for(int j=1; j<=n; j++)ans[i]=(ans[i]+w[j]*a[j][i])%mod;}for(int i=1; i<=n-1; i++)printf("%d ", ans[i]); printf("%d\n", ans[n]);scanf("%d%d%d%d%d%d", &n, &mod, &A, &B, &C, &m);}return 0;}
0 0
- bzoj4688 One-Dimensional
- AT1 one-dimensional objects
- [数据结构]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
- 2017.8.5 One-Dimensional 思考记录
- .net Core 自我学习随笔(一)——开门红,还是开门绿?
- 图像处理之图像基本变化(平移、缩放、旋转)(Octave实现)
- 关于无状态的http协议
- Windows下Idea,AndroidStudio的字体美化
- jquery导入min包报错
- bzoj4688 One-Dimensional
- react-native 调用 native 步骤
- 1052. 卖个萌 (20)
- Linux开发开篇
- 【Data Structures】 11. HashTable—Simple Implementation
- BootStrap简单介绍及案例分享
- 每日乱谈(一)
- ThinkPhp框架学习之入门第一天
- [webAPP项目]基于MUI框架webAPP开发功能流程之引导图制作详解01