vijos1049送给圣诞夜的礼品
这题犯了两个sb错误,写下来,为以后做个警告
一、mul过程中将k作为了循环变量
二、看错了题……
题目中说是数到k行,而我却以为数k遍……
做矩阵乘法,只要记住一句话:置换一定可以写成矩阵的形式!
并且:矩阵满足结合律,不满足交换率!
代码:
type matrix=array[..,..] of longint;
var a:array[..] of matrix;
b,c:matrix;
i,j,n,m,k,x:longint;
ans,d:array[..] of longint;
procedure tiao(x:matrix);
var i,j:longint;
begin
for i:= to n do
begin
for j:= to n do write(x[i,j]);
writeln;
end;
end;
procedure init;
begin
readln(n,m,k);
fillchar(a,sizeof(a),);
fillchar(b,sizeof(b),);
fillchar(c,sizeof(c),);
for i:= to m do
begin
for j:= to n do
begin
read(x);
a[i,x,j]:=;
end;
readln;
end;
for i:= to n do begin b[i,i]:=;c[i,i]:=;end;
end;
procedure mul(var x,y,z:matrix);
var t:matrix;
i,j,l:longint;
begin
fillchar(t,sizeof(t),);
for i:= to n do
for j:= to n do
for l:= to n do
inc(t[i,j],x[i,l]*y[l,j]);
z:=t;
end;
procedure ksm(cs:longint);
begin
while cs<> do
begin
if cs and = then mul(b,c,c);
cs:=cs>>;
mul(b,b,b);
end;
end;
procedure main;
begin
for i:= to m do mul(b,a[i],b);
ksm(k div m);
for i:= to k mod m do mul(c,a[i],c);
for i:= to n do d[i]:=i;
fillchar(ans,sizeof(ans),);
for i:= to n do
for j:= to n do
inc(ans[i],d[j]*c[j,i]);
for i:= to n do write(ans[i],' ');
end;
begin
init;
main;
end.
vijos1049送给圣诞夜的礼品的更多相关文章
- P1049送给圣诞夜的礼品(矩阵十大问题之四)
https://vijos.org/p/1049 P1049送给圣诞夜的礼品 Accepted 标签:组合数学送给圣诞夜的礼物[显示标签] 返回代码界面 | 关闭 Pascal Pasca ...
- vijosP1049 送给圣诞夜的礼品
vijosP1049 送给圣诞夜的礼品 链接:https://vijos.org/p/1049 [思路] 快速幂+矩阵转换. 将m次矩阵的转换看作是一次快速幂中的乘法操作,这样可以用O(log(k/m ...
- 【vijos1049】送给圣诞夜的礼品
题面 描述 当小精灵们把贺卡都书写好了之后.礼品准备部的小精灵们已经把所有的礼品都制作好了.可是由于精神消耗的缘故,他们所做的礼品的质量越来越小,也就是说越来越不让圣诞老人很满意.可是这又是没有办法的 ...
- vijos 1047 送给圣诞夜的礼品 矩阵
题目链接 描述 当小精灵们把贺卡都书写好了之后.礼品准备部的小精灵们已经把所有的礼品都制作好了.可是由于精神消耗的缘故,他们所做的礼品的质量越来越小,也就是说越来越不让圣诞老人很满意.可是这又是没有办 ...
- VOJ1049 送给圣诞夜的礼品 【矩阵经典4】
任意门:https://vijos.org/p/1049 描述 当小精灵们把贺卡都书写好了之后.礼品准备部的小精灵们已经把所有的礼品都制作好了.可是由于精神消耗的缘故,他们所做的礼品的质量越来越小,也 ...
- 矩阵经典题目四:送给圣诞夜的礼品(使用m个置换实现对序列的转变)
https://vijos.org/p/1049 给出一个序列,含n个数.然后是m个置换,求对初始序列依次进行k次置换,求最后的序列. 先看一个置换.把置换表示成矩阵的形式.然后将m个置换乘起来.那么 ...
- ( VIJOS )VOJ 1049 送给圣诞夜的礼品 矩阵快速幂
https://vijos.org/p/1049 非常普通的矩阵快速幂... 但是我 第一次写忘了矩阵不能交换律... 第一二次提交RE直到看到题解才发现这道题不能用递归快速幂... 第三次提交成 ...
- Codevs 1293 送给圣诞夜的极光
1293 送给圣诞夜的极光 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 圣诞老人回到了北极圣 ...
- codevs1293送给圣诞夜的极光(bfs)
1293 送给圣诞夜的极光 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 圣诞老人回到了北极圣诞区,已经快到12点了 ...
随机推荐
- xml学习总结(三)
复杂Schema 扩展包含简单内容的复杂类型 <?xml version="1.0" encoding="UTF-8"?> <xs:schem ...
- 请给出一个左侧定宽右侧自适应的HTML结构及样式
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...
- liunx命令之whereis、which、find的区别和联系
liunx命令之whereis.which.find的区别和联系
- 在系统方法中调用navigationController的标准写法
在系统方法中调用navigationController的标准写法 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animat ...
- JS创建类和对象
JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活 ...
- Interlocked.Increment 方法 和Interlocked.Decrement 方法作用
Interlocked.Increment 方法:让++成为原子操作:Interlocked.Decrement 方法让--成为原子操作.什么叫原子操作呢.就是不会被别人打断,因为C#中的一个语句,编 ...
- 2002: [Hnoi2010]Bounce 弹飞绵羊 - BZOJ
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- 2336: [HNOI2011]任务调度 - BZOJ
一道随机算法的题目 随便用什么随机算法 首先我们可以想到枚举类型3的最终类型,然后再做 先贪心出一个较优的序列,首先我们知道肯定是在A机器上先做完类型1的事件再做类型2的事件,机器B也类似,因为这些没 ...
- 5.3:从bean的实例中获取对象
5.3 从bean的实例中获取对象 在getBean方法中,getObjectForBeanInstance是个高频率使用的方法,无论是从缓存中获得bean还是根据不同的scope策略加载bean. ...
- sql之left join、right join、inner join的区别(转)
感谢:http://www.cnblogs.com/pcjim/articles/799302.html ----------------------------------------------- ...