就是优化一段代码,用矩阵快速幂(刚开始想到了转移矩阵以为是错的)

在搜题解时发现了一个神奇的网站:http://oeis.org/

用来找数列规律 的神器。。。。

规律就是an=an-1+2*an-2+1

然后构造矩阵就行了

还有特例1的时候记得%m

  1. #include<map>
  2. #include<set>
  3. #include<cmath>
  4. #include<queue>
  5. #include<stack>
  6. #include<vector>
  7. #include<cstdio>
  8. #include<iomanip>
  9. #include<cstdlib>
  10. #include<cstring>
  11. #include<iostream>
  12. #include<algorithm>
  13. #define pi acos(-1)
  14. #define ll long long
  15. #define mod 10000007
  16. #define ls l,m,rt<<1
  17. #define rs m+1,r,rt<<1|1
  18. #pragma comment(linker, "/STACK:1024000000,1024000000")
  19.  
  20. using namespace std;
  21.  
  22. const double g=10.0,eps=1e-;
  23. const int N=+,maxn=<<+,inf=0x3f3f3f3f;
  24.  
  25. struct Node{
  26. ll row,col;
  27. ll a[N][N];
  28. };
  29. ll m;
  30. Node mul(Node x,Node y)
  31. {
  32. Node ans;
  33. ans.row=x.row,ans.col=y.col;
  34. memset(ans.a,,sizeof ans.a);
  35. for(ll i=;i<x.row;i++)
  36. for(ll j=;j<x.col;j++)
  37. for(ll k=;k<y.col;k++)
  38. ans.a[i][k]=(ans.a[i][k]+x.a[i][j]*y.a[j][k]+m)%m;
  39. return ans;
  40. }
  41. Node quick_mul(Node x,ll n)
  42. {
  43. Node ans;
  44. ans.row=x.row,ans.col=x.col;
  45. memset(ans.a,,sizeof ans.a);
  46. for(ll i=;i<ans.col;i++)ans.a[i][i]=;
  47. while(n){
  48. if(n&)ans=mul(ans,x);
  49. x=mul(x,x);
  50. n/=;
  51. }
  52. return ans;
  53. }
  54. int main()
  55. {
  56.  
  57. ios::sync_with_stdio(false);
  58. cin.tie();
  59. // cout<<setiosflags(ios::fixed)<<setprecision(2);
  60. ll n;
  61. while(cin>>n>>m){
  62. if(n==)
  63. {
  64. cout<<%m<<endl;
  65. continue;
  66. }
  67. Node A;
  68. A.row=,A.col=;
  69. memset(A.a,,sizeof A.a);
  70. A.a[][]=,A.a[][]=,A.a[][]=;
  71. A.a[][]=,A.a[][]=,A.a[][]=;
  72. A.a[][]=,A.a[][]=,A.a[][]=;
  73. /* for(int i=0;i<A.row;i++)
  74. {
  75. for(int j=0;j<A.col;j++)
  76. cout<<A.a[i][j]<<" ";
  77. cout<<endl;
  78. }*/
  79. Node B;
  80. B.row=,B.col=;
  81. B.a[][]=,B.a[][]=,B.a[][]=;
  82. B=mul(quick_mul(A,n-),B);
  83. cout<<B.a[][]<<endl;
  84. }
  85. return ;
  86. }

hdu4990矩阵快速幂的更多相关文章

  1. hdu4990 矩阵快速幂

    题意:       给你一短代码,让你优化这个代码,代码如下 #pragma comment(linker, "/STACK:1024000000,1024000000") #in ...

  2. hdu4990 Reading comprehension 矩阵快速幂

    Read the program below carefully then answer the question.#pragma comment(linker, "/STACK:10240 ...

  3. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  4. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  5. 51nod 1113 矩阵快速幂

    题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...

  6. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

  7. HDU5950(矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...

  8. 51nod 1126 矩阵快速幂 水

    有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...

  9. hdu2604(递推,矩阵快速幂)

    题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...

随机推荐

  1. Oracle HA 之 基于活动数据库复制配置oracle 11.2 dataguard

    规划:主库:db_name=dbking               db_unique_name=dbkingpri               备库:db_name=dbking          ...

  2. 【elasticsearch 依赖 urllib3 请问 是否 urllib3和阿里es、oss的对接出现异常】

    During handling of the above exception, another exception occurred: Traceback (most recent call last ...

  3. scrapy爬虫系列之三--爬取图片保存到本地

    功能点:如何爬取图片,并保存到本地 爬取网站:斗鱼主播 完整代码:https://files.cnblogs.com/files/bookwed/Douyu.zip 主要代码: douyu.py im ...

  4. 前端~HTML~CSS~JavaScript~JQuery~Vue

    HTML CSS JavaScript DOM文档操作 jQuery实例 Vue

  5. 转!!spring @component 详解 默认初始化bean的名字 VNumberTask类 就是 VNumberTask

    参考链接:信息来源 今天碰到一个问题,写了一个@Service的bean,类名大致为:CUser xml配置: <context:component-scan base-package=&quo ...

  6. 聪明的打字员---poj1184(bfs)

    题目链接:http://poj.org/problem?id=1184 分析:首先可以发现有6*10^6种状态,比较多,不过搜索的时候可以去除一些无用的状态, 可以发现一个点的值(2-5)如果想要改变 ...

  7. tomcat启动错误:ZipException

    [/opt/apache-tomcat-/webapps/secsight.war] -Dec- ::] org.apache.catalina.core.ContainerBase.addChild ...

  8. Python知识总汇

    一.python基础 python基础 python编码问题 逻辑运算 二.python数据类型 二.python数据类型 三.IO(文件处理) 三.IO(文件处理) 四.函数 函数基础 名称空间与作 ...

  9. mysql 数据操作 单表查询 where约束 练习

    create table employee( id int not null unique auto_increment, name ) not null, sex enum('male','fema ...

  10. Flask系列(二)Flask基础

    知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref(django),werkzeug(flask),uwsgi(上线) 2.实例化Flask对象,里面是有参数的 app = F ...