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

题意:

  • 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. HDU 5322 Hope (分治NTT优化DP)

    题面传送门 题目大意: 假设现在有一个排列,每个数和在它右面第一个比它大的数连一条无向边,会形成很多联通块. 定义一个联通块的权值为:联通块内元素数量的平方. 定义一个排列的权值为:每个联通块的权值之 ...

  2. Python 不同列表时间测试

    import timeit import threading def test1(): l = [] for i in range(1000): l = l + [i] def test2(): l ...

  3. 洛谷—— P3353 在你窗外闪耀的星星

    https://www.luogu.org/problem/show?pid=3353 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年 ...

  4. wordpress迁移以及遇到的一些问题[mysql备份导入导出][固定链接404]

    总的问题有两个,一是apache的配置,二是mysql的导出和导入.以及迁移后遇到的一些问题解决过程和方法. A机器为老server.B为新server,A机器使用Appserv,B使用wmap,在配 ...

  5. thrift java示例

    thrift java示例 使用IntelliJ IDEA作为开发工具: 增加proto文件夹,里面写上sayHello.proto syntax = "proto3"; opti ...

  6. string转utf8后解决TTS识别中文的问题

    今天遇到string字符编码的问题,由于遇到了用TTS将文本转语音的一个API,里面的中文必须是utf8的,我传了一个uncode编码的中文进去,就一直不能正常读出来.后来才发现是编码的问题.这里在网 ...

  7. ListView的adapter中getView方法一直调用

    当ListView的高度不定(比如重写ListView搞成可自己主动的扩展的ListView)或 ListView嵌套在SrollView(高度不定)中,listView中的一个item元素改变会使得 ...

  8. asp.net web site中reference的version的autoupdate

    https://stackoverflow.com/questions/833924/visual-studio-stop-auto-update-on-references This is vali ...

  9. ORACLE查询闪回

    在Oracle中如果错误地提交了修改操作,然后想查看修改前的值,这时候可以使用查询闪回(query flashback). 查询闪回可以根据根据一个时间值或者系统变更号(SCN)进行. 执行闪回操作, ...

  10. 2017-3-4 leetcode 414 485 495

    虽说周末要早起来着,但是日子过得有点奇怪,一不小心就忘掉了... leetcode414 https://leetcode.com/problems/third-maximum-number/?tab ...