zoukankan      html  css  js  c++  java
  • vijos1049送给圣诞夜的礼品

    这题犯了两个sb错误,写下来,为以后做个警告

    一、mul过程中将k作为了循环变量

    二、看错了题……

          题目中说是数到k行,而我却以为数k遍……

    做矩阵乘法,只要记住一句话:置换一定可以写成矩阵的形式!

    并且:矩阵满足结合律,不满足交换率!

    代码:

     1 type matrix=array[0..110,0..110] of longint;
     2 var a:array[0..15] of matrix;
     3     b,c:matrix;
     4     i,j,n,m,k,x:longint;
     5     ans,d:array[0..150] of longint;
     6 procedure tiao(x:matrix);
     7  var i,j:longint;
     8  begin
     9  for i:=1 to n do
    10   begin
    11    for j:=1 to n do write(x[i,j]);
    12    writeln;
    13   end;
    14  end;
    15 procedure init;
    16  begin
    17    readln(n,m,k);
    18    fillchar(a,sizeof(a),0);
    19    fillchar(b,sizeof(b),0);
    20    fillchar(c,sizeof(c),0);
    21    for i:=1 to m do
    22     begin
    23       for j:=1 to n do
    24         begin
    25           read(x);
    26           a[i,x,j]:=1;
    27         end;
    28       readln;
    29     end;
    30    for i:=1 to n do begin b[i,i]:=1;c[i,i]:=1;end;
    31  end;
    32 procedure mul(var x,y,z:matrix);
    33  var t:matrix;
    34      i,j,l:longint;
    35  begin
    36    fillchar(t,sizeof(t),0);
    37    for i:=1 to n do
    38      for j:=1 to n do
    39        for l:=1 to n do
    40          inc(t[i,j],x[i,l]*y[l,j]);
    41    z:=t;
    42  end;
    43 procedure ksm(cs:longint);
    44  begin
    45    while cs<>0 do
    46     begin
    47       if cs and 1=1 then mul(b,c,c);
    48       cs:=cs>>1;
    49       mul(b,b,b);
    50     end;
    51  end;
    52 procedure main;
    53  begin
    54    for i:=1 to m do mul(b,a[i],b);
    55    ksm(k div m);
    56    for i:=1 to k mod m do mul(c,a[i],c);
    57    for i:=1 to n do d[i]:=i;
    58    fillchar(ans,sizeof(ans),0);
    59    for i:=1 to n do
    60      for j:=1 to n do
    61       inc(ans[i],d[j]*c[j,i]);
    62    for i:=1 to n do write(ans[i],' ');
    63  end;
    64 begin
    65   init;
    66   main;
    67 end.       
    View Code
  • 相关阅读:
    Google Chrome中的高性能网络 (三)
    Linux入门基础 #5:Linux文件系统挂载管理
    git学习 #2:git基本操作
    ural 1018 Binary Apple Tree(树形dp | 经典)
    MST最小生成树及Prim普鲁姆算法
    UVA 10465 Homer Simpson(dp + 完全背包)
    Android 微信SDK分享功能中的最全过程步骤分析
    python第三方库推荐
    C. Tourist Problem
    Shell脚本编程——了解你的Linux系统必须掌握的20个命令
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/3802765.html
Copyright © 2011-2022 走看看