[gdgzoi] 小肥猪

Description

有k头小肥猪,你每次要给他们一些饲料,重复n次。

每次给的饲料用m个操作表示:

  • 操作1:(1 x)给第x头猪一份饲料;
  • 操作2:(2 x y)把第x头猪的饲料给第y头猪(第x头猪就没有饲料了);
  • 操作3:(3 x)把第x头猪的饲料加倍;

给你k、m、n和m个操作,回答操作过后每头猪有多少份饲料。

Input

第1行三个数:k、m、n;
第2~m+1行每行一个操作。

Output

1行m个数:操作后每头猪的饲料个数(模10000)。

Sample Input

3 4 3
1 3
1 2
2 3 1
3 2

Sample Output

3 14 0

HINT

 

【提示】

第一次操作后:1 2 0

第二次操作后:2 6 0

第三次操作后:3 14 0

【数据范围】

对于50%的数据:n≤10^4;

对于100%的数据:k≤10,m≤10,n≤10^10;

 

题目给出一系列操作,要求我们维护一组数并循环n次,考虑到数据范围,我们很容易想到运用矩阵快速幂维护

因此我们可以构建一个(k+1)*(k+1)大小的矩阵A来存储操作,构建另一个同样大小的矩阵B存储猪的信息,由于操作有三种,我们可以另开三个矩阵表示操作,由于矩阵乘法具有交换律和结合律,每个操作表示的矩阵与A相乘,最后便能得到m次操作后的总状态,幂n-1方后就是最终状态,再用这时的A乘B便可得到操作完成后猪的信息了

如何维护矩阵?假设猪有4头,我们可以得出一下矩阵(i

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值