**链接:****传送门 **

题意:

  • n个小朋友围成一个环( 2 <= n <= 100 )然后进行m次的游戏。

    一开始,第 i 个小朋友有 Ai 个苹果。

    定义游戏的规则为:每一次游戏处于 i 位置的小朋友获得( L* A(i+n-1)%n+R * A(i+1)%n )个苹果( 题目有误 )

    求 m 次游戏后每个小朋友的苹果数量。

思路:

  • 一开始没有看到获得这两个字,gg,,也就是说 A(i) = L* A(i+n-1)%n+R * A(i+1)+A(i)那这道题与HDU 2276 Kiki & Little Kiki 2( <-戳前面链接 )就基本一模一样了,但是这道题如果不用循环矩阵优化就直接T掉了!

/*************************************************************************
> File Name: fzu1692t3.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年05月04日 星期四 19时23分56秒
************************************************************************/ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std; int MOD;
const int maxn = 110;
#define ll long long
#define mod(x) ((x)%MOD)
#define cls(x) memset(x,0,sizeof(x)) struct mat{
int m[maxn][maxn];
}unit;
int t,n,m,L,R; void init_unit(){
for(int i=0;i<maxn;i++) unit.m[i][i] = 1;
}
// 利用循环矩阵降低复杂度
mat operator *(mat a,mat b){
mat ret;
cls(ret.m); // 初始化一下以防出错
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
ret.m[0][i] = mod( ret.m[0][i] + mod(a.m[0][j]*b.m[j][i]) ); for(int i=1;i<n;i++)
for(int j=0;j<n;j++)
ret.m[i][j] = ret.m[i-1][(j-1+n)%n];
return ret;
}
mat pow_mat(mat a,int x){
mat ret = unit;
while(x){
if(x&1) ret = ret*a;
a = a*a;
x >>= 1;
}
return ret;
} mat a,b;
void init(){
cls(a.m);
for(int i=0;i<n;i++){
a.m[i][ (i-1+n)%n ] = R;
a.m[i][ i+1 ] = L;
a.m[i][i] = 1;
}
}
int main(){
init_unit();
int aa[maxn];
cin>>t;
while(t--){
cin>>n>>m>>L>>R>>MOD;
for(int i=0;i<n;i++) scanf("%d",aa+i); init();
mat ans = pow_mat(a,m);
for(int i=0;i<n;i++){
ll tmp = 0;
for(int j=0;j<n;j++)
tmp = mod(tmp + mod(ans.m[i][j]*aa[j]));
ans.m[i][0] = tmp;
} for(int i=0;i<n-1;i++) printf("%d ",ans.m[i][0]);
printf("%d\n",ans.m[n-1][0]);
}
return 0;
}

FZU 1692 Key problem( 循环矩阵优化 + 矩阵快速幂)的更多相关文章

  1. fuzhou 1692 Key problem ***

    Problem 1692 Key problem Accept: 103    Submit: 553 Time Limit: 1000 mSec    Memory Limit : 32768 KB ...

  2. Luogu T7152 细胞(递推,矩阵乘法,快速幂)

    Luogu T7152 细胞(递推,矩阵乘法,快速幂) Description 小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并 观察细胞分裂的规律. 他选取了一种特别的细胞,每 ...

  3. Luogu 3390 【模板】矩阵快速幂 (矩阵乘法,快速幂)

    Luogu 3390 [模板]矩阵快速幂 (矩阵乘法,快速幂) Description 给定n*n的矩阵A,求A^k Input 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵 ...

  4. bzoj 3240: [Noi2013]矩阵游戏 矩阵乘法+十进制快速幂+常数优化

    3240: [Noi2013]矩阵游戏 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 613  Solved: 256[Submit][Status] ...

  5. poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)

    Cow Relays Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7825   Accepted: 3068 Descri ...

  6. bzoj 3240 矩阵乘法+十进制快速幂

    首先,构造出从f[][i]->f[][i+1]的转移矩阵a,和从f[i][m]->f[i+1][1]的转移矩阵b, 那么从f[1][1]转移到f[n][m]就是init*(a^(m-1)* ...

  7. HDU4965 Fast Matrix Calculation —— 矩阵乘法、快速幂

    题目链接:https://vjudge.net/problem/HDU-4965 Fast Matrix Calculation Time Limit: 2000/1000 MS (Java/Othe ...

  8. HDU1575Tr A(矩阵相乘与快速幂)

    Tr A hdu1575 就是一个快速幂的应用: 只要知道怎么求矩阵相乘!!(比赛就知道会超时,就是没想到快速幂!!!) #include<iostream> #include<st ...

  9. BZOJ-3231 递归数列 矩阵连乘+快速幂

    题不是很难,但是啊,人很傻啊...机子也很鬼畜啊... 3231: [Sdoi2008]递归数列 Time Limit: 1 Sec Memory Limit: 256 MB Submit: 569 ...

随机推荐

  1. PHP中调用Soap/WebService

    关于在PHP中如何调用Soap/WebService的描述,网络上有不少帖子.但是主要讲述了如何用PHP开发服务器端.客户端并加以关联,而很少触及在PHP中调用现成的WebService的情况.在本文 ...

  2. String,StringBuffer,StringBuild的区别

    1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuild ...

  3. ACdream 1415 Important Roads

    Important Roads Special JudgeTime Limit: 20000/10000MS (Java/Others)Memory Limit: 128000/64000KB (Ja ...

  4. BA-siemens-ppm模块在ALN层通信

    PPM作为新的扩展模块,有MS/TP通讯的能力,但是在常规设置的时候必须设置在PXC Modular下面,PPM上线也必须在PXC Modular上中超级终端设置,偶然通过一个项目实现了PPM挂载在A ...

  5. [叁]Pomelo游戏server编程分享 之 server结构与配置分析

    网络部署结构 我们先看一下Pomeloserver网络部署情况,直接上图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3RiaW56aQ==/font/ ...

  6. insmod: error inserting &#39;hello.ko&#39;: -1 Invalid module format

    在学习编写linux驱动程序的时候,一般都是从写一个helloworld的模块開始. 可是在编译完毕后,进行模块载入的时候,有时会出现例如以下错误: insmod: error inserting ' ...

  7. hdoj--1171--Number Sequence(KMP)

    Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. Oracle数据库中闪回恢复的详细分析

    Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的.这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了.oracle10g大 ...

  9. 2019黑马JAVAEE57期基础班就业班(全套)

    黑马java57期 百度网盘 2019黑马JAVAEE57期基础班就业班(全套)百度网盘 下载 Spring全家桶解决方案 - 微服务认证解决方案(JWT) - 微服务网关解决方案(Zuul) 黑马j ...

  10. 完整注册+JQuery验证+selert后台校验

    Java代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8 ...