题目:
传送门

思路:
      我们可以先写出转移方程,发现该方程是一个不变的递推式,我们考虑用矩阵快速幂来优化这个递推式.

完结撒花…

AC_Code

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;const long long mod = 1e9+7;long long n,UP;struct mat
{long long mn[9][9];   mat() {for(int i = 0;i<UP;i++) {for(int j = 0;j<UP;j++) {mn[i][j]=0;}}for(int i = 0;i<UP;i++) {mn[i][i] = 1;}}mat operator * (const mat& a) {mat res;for(int i = 0;i<UP;i++) {res.mn[i][i] = 0;}for(int i=0;i<UP;i++) {for(int j=0;j<UP;j++) {for(int k=0;k<UP;k++) {res.mn[i][j] += mn[i][k]*a.mn[k][j]%mod;res.mn[i][j] %= mod;}}}return res;}
};mat fast(mat a,long long c) {mat res = mat();while(c) {if(c&1) res  = res * a;a = a*a;c >>= 1;}return res;
}mat ans;
mat res;int main() {UP = 9;scanf("%lld",&n);for(int i = 0;i<9;i++) for(int j =0;j<9;j++) res.mn[i][j] = ans.mn[i][j] = 0;//这里我是在枚举转移方式,看不懂的小伙伴直接打出来也可以for(int i = 0;i<3;i++) {for(int j = 0;j<3;j++) {for(int k = 0;k<3;k++) {if(k*j<=i*i) res.mn[k*3+i][i*3+j] = 1;}}}for(int i = 0;i<9;i++) ans.mn[0][i] = 1;res = fast(res,n-2);ans = ans * res;long long sum =0;for(int i=0;i<9;i++) sum += ans.mn[0][i],sum%=mod;printf("%lld\n",sum); return 0;
}

gym 102302 2019 USP-ICMC H-Log Concave Sequences (dp + 矩阵快速幂优化)相关推荐

  1. 2019.02.11 bzoj4818: [Sdoi2017]序列计数(矩阵快速幂优化dp)

    传送门 题意简述:问有多少长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数,且其中至少有一个数是质数,答案对201704082017040820170408取模(n≤1e9, ...

  2. H - Fibonacci POJ - 3070 (矩阵快速幂)

    H - Fibonacci POJ - 3070 (矩阵快速幂) Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and ...

  3. #1560 : H国的身份证号码II(dp+矩阵快速幂)

    #1560 : H国的身份证号码II 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 H国的身份证号码是一个N位的正整数(首位不能是0).此外,由于防伪需要,一个N位正整 ...

  4. H - Log Concave Sequences —— 矩阵快速幂

    This way 题意: 你现在有无穷个0,1,2,现在让你构造一个长度为n的串,使得满足以下条件 对于第i位(2<=i<n),a[i]*a[i]>=a[i-1]*a[i+1] 问你 ...

  5. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)E.飞行棋(期望dp+矩阵快速幂)

    题目 飞行棋的规则如下: 1.每名玩家有一个棋子,每个回合可以掷一次骰子. 2.如果使用的骰子为 k面,则这 k面上的点数分别为 1,2,3,-,k,且掷得每种点数的概率均为​. 3.如果当前回合掷得 ...

  6. Log Concave Sequences 【Gym - 102302H】【矩阵快速幂】

    Log Concave Sequences Gym - 102302H 题目中说到,对于每个,有,于是乎,我们可以看成是多个三元组的合并了. 那么,又该如何去计算答案呢?我们不妨看成多个基础三元组的方 ...

  7. Log Concave Sequences(矩阵快速幂求递推)

    Log Concave Sequences Gym - 102302H A sequence of numbers A is said to be logarithm concave if, and ...

  8. (矩阵快速幂)CF102302H. Log Concave Sequences

    CF102302H. Log Concave Sequences 题意&思路: 有n位数,每位只包含0,1,2,要求对于每个位置,ai2>=ai-1*ai+1.求这样的数有多少. 对于答 ...

  9. 【Codeforces Gym - 101635C Macarons 】【矩阵快速幂+状压】【dfs时间换空间】

    [链接] http://codeforces.com/gym/101635/attachments [题意] 求用1*1,1*2的方格填n*m的矩阵的方法数 [知识点] 状压dfs+矩阵快速幂 [分析 ...

最新文章

  1. pandas使用groupby函数计算dataframe数据中每个分组的N个数值的滚动标准差(rolling std)、例如,计算某公司的多个店铺每N天(5天)的滚动销售额标准差
  2. 数据中心制冷基本原则及节能方案
  3. C++赋值运算符重载【C++赋值运算符重载】
  4. LeetCode-有效的字母异位词
  5. linux的目录proc pid,Linux /proc第一篇----/proc/pid记录了什么
  6. Java转iOS-第一个项目总结(2)
  7. 怎么把python解释器配置在pycharm中_在PyCharm中配置项目(三):配置Python解释器...
  8. 安全技术可以采用计算机安全,2017年计算机三级《信息安全技术》习题
  9. 138个被撤出EI检索的会议
  10. mysql中加入正则表达式,mysql中的正则表达式搜索
  11. phalapi 数据库锁_[7.11]-phalapi-进阶篇5(数据库读写分离) | PhalApi(π框架) - PHP轻量级开源接口框架...
  12. [c++primer][05]表达式
  13. gsp计算机软件管理,药品进销存管理系统(含GSP管理)
  14. ubuntu装指定分区_安装Ubuntu16.04系统步骤详细加分区
  15. Halcon区域region系列(1)相关的算子
  16. 微信自定义分享--失效问题
  17. 怎么修改云服务器,怎么修改云服务器的登录密码
  18. 经典的足球明星广告--[困兽斗]
  19. 鲲鹏cpu支持linux,首款国产CAD适配统一操作系统UOS:兼容鲲鹏、兆芯、龙芯等国产CPU...
  20. 算法比赛经历--蓝桥杯,天梯赛,力扣,牛客,cf,acwing,acm

热门文章

  1. win7系统如何连接蓝牙耳机及出现的问题
  2. 张飞硬件设计与开发 第四部
  3. Python妙用:使用一行代码下载视频
  4. iOS苹果手机上最好的3个mobi阅读器
  5. 领取20万字《Kafka运维与实战宝典》PDF文档
  6. Caffe工厂模式解析
  7. java比较三个数大小_java算法--三个数字比较大小
  8. 飞信真的值得推荐de理由
  9. 素数(质数)prime number相关知识
  10. Linux命令之rm