题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898

当然是邻接矩阵做转移矩阵来快速幂。

对于鳄鱼,好在它们周期的lcm是12,也就是每12次就又一样了。

所以把12个转移矩阵合成一下,就可以每次乘一样的,进而快速幂。%12剩下的次数暴力一下。

学到了一些方便的东西,比如struct的构造函数没有参数之类的。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. const int N=,mod=1e4;
  6. int n,m,st,ed,k,fs;
  7. struct Matrix{
  8. int a[N][N];
  9. Matrix(){memset(a,,sizeof a);}
  10. Matrix operator*(const Matrix &b)const
  11. {
  12. Matrix c;
  13. memset(c.a,,sizeof c.a);//
  14. for(int i=;i<=n;i++)
  15. for(int k=;k<=n;k++)
  16. for(int j=;j<=n;j++)
  17. (c.a[i][j]+=a[i][k]*b.a[k][j]%mod)%=mod;
  18. return c;
  19. }
  20. void init()
  21. {
  22. for(int i=;i<=n;i++)a[i][i]=;
  23. }
  24. }r[],ans;
  25. int main()
  26. {
  27. scanf("%d%d%d%d%d",&n,&m,&st,&ed,&k);st++;ed++;
  28. int x,y;
  29. for(int i=;i<=m;i++)
  30. {
  31. scanf("%d%d",&x,&y);x++;y++;
  32. for(int j=;j<=;j++)
  33. r[j].a[x][y]=,r[j].a[y][x]=;
  34. }
  35. scanf("%d",&fs);
  36. for(int i=;i<=fs;i++)
  37. {
  38. scanf("%d",&x);
  39. for(int j=;j<=x;j++)
  40. {
  41. scanf("%d",&y);y++;
  42. for(int k=j;k<=;k+=x)
  43. memset(r[k].a[y],,sizeof r[k].a[y]);
  44. }
  45. }
  46. r[].init();
  47. for(int i=;i<=;i++)r[]=r[]*r[i];
  48. ans.a[][st]=;x=k/;
  49. while(x)
  50. {
  51. if(x&)ans=ans*r[];
  52. r[]=r[]*r[];x>>=;
  53. }
  54. x=k%;
  55. for(int i=;i<=x;i++)ans=ans*r[i];
  56. printf("%d",ans.a[][ed]);
  57. return ;
  58. }

bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂的更多相关文章

  1. BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼 [矩阵乘法]

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1082  Solved: 602[Submit][S ...

  2. bzoj1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 求到达方案数...还是矩阵快速幂: 能够到达就把邻接矩阵那里赋成1,有鳄鱼的地方从各处 ...

  3. BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵快速幂)

    题意 题目链接 Sol 不难发现吃人鱼的运动每\(12s\)一个周期 所以暴力建12个矩阵,放在一起快速幂即可 最后余下的部分暴力乘 #include<bits/stdc++.h> usi ...

  4. BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1085  Solved: 604[Submit][S ...

  5. bzoj 1898: [Zjoi2005]Swamp 沼泽鳄鱼【dp+矩阵快速幂】

    注意到周期234的lcm只有12,也就是以12为周期,可以走的状态是一样的 所以先预处理出这12个状态的转移矩阵,乘起来,然后矩阵快速幂优化转移k/12次,然后剩下的次数暴力转移即可 #include ...

  6. BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼(矩阵乘法)

    可以发现,如果没有鳄鱼,那么就是裸地一道题,但是可以发现鳄鱼最多每12次重复,那么就少于12的那部分dp,其他的就矩阵乘法就行了 PS:第一次吧矩阵乘法AC了好开心QAQ CODE: #include ...

  7. 1898: [Zjoi2005]Swamp 沼泽鳄鱼

    1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1582 Solved: 870 [Submit][S ...

  8. BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼( dp + 矩阵快速幂 )

    ----------------------------------------------------------------------- #include<cstdio> #incl ...

  9. 【BZOJ1898】[Zjoi2005]Swamp 沼泽鳄鱼 矩阵乘法

    [BZOJ1898][Zjoi2005]Swamp 沼泽鳄鱼 Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎 ...

随机推荐

  1. 【HackerRank】 Chocolate Feast

    Little Bob loves chocolates, and goes to the store with $N money in his pocket. The price of each ch ...

  2. 在看 jquery 源码中发现的一些优化方向

    1. 避免使用 $.fn.each 或 $.each 因为它比原生的 for/while 真的会慢一些,循环次数越多差距越大. 另外,对象的 for-in 比 for 是要快一丢丢的,但数组的 for ...

  3. @MarkFan 口语练习录音 20140415 [MDL演讲口语录音]

    Hi,everybody! 今天是2014年4月14日, 现在是晚上十一点零柒分. 一本励志的书,一场振奋人心的演讲,一次推心置腹的谈话, 最多只是在你背后小推你一下,最终决定是否迈出前进的步伐, 以 ...

  4. cocos2dx打飞机项目笔记五:CCSpriteBatchNode 的使用

    在上一节里,在头文件看到 定义了一个 CCSpriteBatchNode* batchNode;,在addEnemy方法里看到 batchNode->addChild(enemy); 新建的敌机 ...

  5. 安装MySQL5.7.18遇到的坑

    最近才注意到MySQL的各个版本之间差别还挺大的,比如5.5.x版本的timestamp类型列只能有一个设置为default CURRENT_TIMESTAMP的,于是尝试了换成一个新版本是mysql ...

  6. MySql增加用户、授权、修改密码等语句

    1. mysql 增加新用户: insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) value ...

  7. 【LABVIEW到C#】2》database的操作(一)之 创建access和创建表单

    namespace添加如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  8. WPF各种控件详解——(WPF从我炫系列)

    http://blog.csdn.net/zx13525079024/article/details/5694638

  9. 20个面试题让你真正了解jQuery

    1. jQuery 库中的 $() 是什么?(答案如下) $() 函数是 jQuery() 函数的别称, $() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery  ...

  10. 《Advanced Bash-scripting Guide》学习(十二):占位符":"及其他

    本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 : 在一个二元命令中提供一个占位符 例1. : ${username=`whoa ...