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

题意:

  • 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. [网络流24题] 最长k可重线段集问题 (费用流)

    洛谷传送门 LOJ传送门 最长k可重区间集问题的加强版 大体思路都一样的,不再赘述,但有一些细节需要注意 首先,坐标有负数,而且需要开$longlong$算距离 但下面才是重点: 我们把问题放到了二维 ...

  2. Spring 使用外部属性文件配置

    1.Spring提供了一个PropertyPlaceholderConfigurer的BeanFactory后置处理器,这个处理器允许用户将Bean的配置的部分内容 移到属性文件中.可以在Bean配置 ...

  3. Hibernate 事务和并发控制

    首先关于Hibernate事务控制,下面是非常权威的资料, https://docs.jboss.org/hibernate/orm/4.0/devguide/en-US/html/ch02.html ...

  4. Python中图像的缩放 resize()函数的应用

    cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst 参数说明: src - 原图 dst - 目标图像.当参数ds ...

  5. 【hdu 6406】Taotao Picks Apples

    [链接] 我是链接,点我呀:) [题意] 题意相当于问你改变一个位置之后. 从左往右扫描最大值.这个最大值会改变多少次. [题解] 假设我们改变的是i这个位置,下面说的a[i]都是改成q之后的a[i] ...

  6. Qt QImage与OpenCV Mat转换

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51029382 应一个朋友的要求,整理总 ...

  7. oracle导入expdp、导出impdp数据库用户

    仅限oracle服务器上执行:把172.16.251.136:1521/orcl的AMI4_2用户导入到192.168.2.30:1521/orclss中的AMI1用户:  关于导入导出更详细的见文章 ...

  8. UVA 12124 UVAlive 3971 Assemble(二分 + 贪心)

    先从中找出性能最好的那个数, 在用钱比較少的去组合,能组出来就表明答案在mid的右边,反之在左边, #include<string.h> #include<map> #incl ...

  9. Hibernate单向关联N-N

    单向N-N关联必须使用连接表. Company实体: package com.ydoing.hibernate5; import java.util.HashSet; import java.util ...

  10. swift菜鸟入门视频教程-09-类和结构体

    本人自己录制的swift菜鸟入门,欢迎大家拍砖,有什么问题能够在这里留言. 主要内容: 类和结构体对照 结构体和枚举是值类型 类是引用类型 类和结构体的选择 集合(collection)类型的赋值与复 ...