UVA 11551 - Experienced Endeavour

题目链接

题意:给定一列数,每一个数相应一个变换。变换为原先数列一些位置相加起来的和,问r次变换后的序列是多少

思路:矩阵高速幂,要加的位置值为1。其余位置为0构造出矩阵,进行高速幂就可以

代码:

  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. const int N = 55;
  5.  
  6. int t, n, r, a[N];
  7.  
  8. struct mat {
  9. int v[N][N];
  10. mat() {memset(v, 0, sizeof(v));}
  11. mat operator * (mat c) {
  12. mat ans;
  13. for (int i = 0; i < n; i++) {
  14. for (int j = 0; j < n; j++) {
  15. for (int k = 0; k < n; k++)
  16. ans.v[i][j] = (ans.v[i][j] + v[i][k] * c.v[k][j]) % 1000;
  17. }
  18. }
  19. return ans;
  20. }
  21. };
  22.  
  23. mat pow_mod(mat x, int k) {
  24. mat ans;
  25. for (int i = 0; i < n; i++) ans.v[i][i] = 1;
  26. while (k) {
  27. if (k&1) ans = ans * x;
  28. x = x * x;
  29. k >>= 1;
  30. }
  31. return ans;
  32. }
  33.  
  34. int main() {
  35. scanf("%d", &t);
  36. while (t--) {
  37. scanf("%d%d", &n, &r);
  38. for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  39. int x; mat Mat;
  40. for (int i = 0; i < n; i++) {
  41. scanf("%d", &x);
  42. int b;
  43. while (x--) {
  44. scanf("%d", &b);
  45. Mat.v[i][b] = 1;
  46. }
  47. }
  48. Mat = pow_mod(Mat, r);
  49. for (int i = 0; i < n; i++) {
  50. int ans = 0;
  51. for (int j = 0; j < n; j++) {
  52. ans = (ans + a[j] * Mat.v[i][j]) % 1000;
  53. }
  54. printf("%d%c", ans, (i == n - 1 ? '\n' : ' '));
  55. }
  56. }
  57. return 0;
  58. }

UVA 11551 - Experienced Endeavour(矩阵高速幂)的更多相关文章

  1. uva 10655 - Contemplation! Algebra(矩阵高速幂)

    题目连接:uva 10655 - Contemplation! Algebra 题目大意:输入非负整数,p.q,n,求an+bn的值,当中a和b满足a+b=p,ab=q,注意a和b不一定是实数. 解题 ...

  2. UVA 11551 Experienced Endeavour

    矩阵快速幂. 题意事实上已经告诉我们这是一个矩阵乘法的运算过程. 构造矩阵:把xi列的bij都标为1. 例如样例二: #include<cstdio> #include<cstrin ...

  3. UVA11551 Experienced Endeavour —— 矩阵快速幂

    题目链接:https://vjudge.net/problem/UVA-11551 题意: 给定一列数,每个数对应一个变换,变换为原先数列一些位置相加起来的和,问r次变换后的序列是多少 题解: 构造矩 ...

  4. F - Experienced Endeavour 矩阵快速幂

    Alice is given a list of integers by Bob and is asked to generate a new list where each element in t ...

  5. uva 11885 - Number of Battlefields(矩阵高速幂)

    题目连接:uva 11885 - Number of Battlefields 题目大意:给出周长p,问多少种形状的周长为p的,而且该图形的最小包围矩阵的周长也是p,不包含矩形. 解题思路:矩阵高速幂 ...

  6. UVA10518 - How Many Calls?(矩阵高速幂)

    UVA10518 - How Many Calls?(矩阵高速幂) 题目链接 题目大意:给你fibonacci数列怎么求的.然后问你求f(n) = f(n - 1) + f(n - 2)须要多少次调用 ...

  7. HDU2842-Chinese Rings(递推+矩阵高速幂)

    pid=2842">题目链接 题意:求出最少步骤解出九连环. 取出第k个的条件是,k-2个已被取出,k-1个仍在支架上. 思路:想必九连环都玩过吧,事实上最少步骤就是从最后一个环開始. ...

  8. HDU2276 - Kiki &amp; Little Kiki 2(矩阵高速幂)

    pid=2276">题目链接 题意:有n盏灯.编号从1到n.他们绕成一圈,也就是说.1号灯的左边是n号灯.假设在第t秒的时候,某盏灯左边的灯是亮着的,那么就在第t+1秒的时候改变这盏灯 ...

  9. hdu 3221 Brute-force Algorithm(高速幂取模,矩阵高速幂求fib)

    http://acm.hdu.edu.cn/showproblem.php?pid=3221 一晚上搞出来这么一道题..Mark. 给出这么一个程序.问funny函数调用了多少次. 我们定义数组为所求 ...

随机推荐

  1. c# .net使用SqlDataReader注意的几点

    转自:http://blog.knowsky.com/258608.htm 1.当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用 ...

  2. 5个有用的.net profiling工具(转)

    我们有时需要对研发的软件程序进行性能测试,这时需要用到一些Profilers工具.下面列出5个有用的.net Profilers: 1. JetBrains dotTrace JetBrains do ...

  3. unidac连接FireBird数据库

    dbconn: TUniConnection; with dbconn do    begin      if not Connected then         begin            ...

  4. Android 模拟器上的127.0.0.1 localhost

    调试中通过android simulator模拟器链接localhost或者127.0.0.1,因为我在电脑上面建立了apache,我的代码大概就是URL url = new URL(urlStrin ...

  5. Android的那些轮子

    整个AOSP代码,包天包地,从kernel,libc,gui,net……简直包括了绝大多普通程序员职业生涯涉及的整个领域.其实,开源界早已经遇到并且解决了Android的很多问题,不过google讨厌 ...

  6. 《鸟哥的Linux私房菜》读书笔记四

    1.Linux的目录配置以『树状目录』来配置,至於磁碟分割槽(partition)则需要与树状目录相配合! 请问,在预设的情况下,在安装的时候系统会要求你一定要分割出来的两个Partition为何? ...

  7. haskell Types 和 Typeclasses

    Algebraic Data Types 入门 在前面的章节中,我们谈了一些 Haskell 内置的类型和 Typeclass.而在本章中,我们将学习构造类型和 Typeclass 的方法. 我们已经 ...

  8. 23个移动app界面上的旋钮和刻度盘设计示例

      摘要: 从最初进入电子设备领域,旋钮和刻度盘的由最初的功能性设计转变为时尚的外观设计元素,比如在移动app中.这种转变并意外,旋钮和刻度盘不需要占用移动设备的太多空间,并可以简单地为用户提供一些列 ...

  9. Process.StandardInput属性

    获取用于写入应用程序输入的流. 命名空间:System.Diagnostics程序集:System(在 system.dll 中) 语法     C# C++ VB   public StreamWr ...

  10. git fetch 拉取而不合并

    1.git fetch git fetch origin master:tmp git diff tmp git merge tmp git branch -d tmp          从远程获取最 ...