[LUOGU]2016 Sam数
我本来想看看SAM,就看见了这个。。
这道题很容易让人想到数位DP,用\(f[i][j]\)表示考虑到第\(i\)位,最后一位是\(j\)的方案数。看到1e18,直接矩阵快速幂加速,因为它每位转移都是差不多的。。
(本咸鱼复制的矩阵乘法的板子,结果忘了调矩阵大小,调了半天Orz)
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
const int mod=1000000007;
struct Matrix {
long long g[11][11];
int n,m;
Matrix(){memset(g,0,sizeof g);}
Matrix operator * (const Matrix &b) const {
Matrix ans;
ans.n=n,ans.m=b.m;
for(int i=0;i<n;i++)
for(int j=0;j<b.m;j++)
for(int k=0;k<m;k++)
ans.g[i][j]=(ans.g[i][j]+g[i][k]*b.g[k][j])%mod;
return ans;
}
}A,B;
long long n;
Matrix ksm(Matrix d,long long z) {
Matrix ans;
ans.n=d.n,ans.m=d.n;
for(int i=0;i<ans.n;i++)
ans.g[i][i]=1;
while(z) {
if(z&1) ans=ans*d;
d=d*d;
z>>=1;
}
return ans;
}
int main() {
A.n=1,A.m=10;
B.n=10,B.m=10;
cin>>n;
if(n==1) {
puts("10");return 0;
}
for(int i=1;i<=9;i++)
A.g[0][i]=1;
for(int i=0;i<10;i++)
for(int j=0;j<10;j++)
if(abs(i-j)<=2) B.g[i][j]++;
B=A*ksm(B,n-1);
long long ans=0;
for(int i=0;i<10;i++)
ans=(ans+B.g[0][i])%mod;
cout<<ans;
}
[LUOGU]2016 Sam数的更多相关文章
- [BZOJ4408][Fjoi 2016]神秘数
[BZOJ4408][Fjoi 2016]神秘数 试题描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1 ...
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 128[Submit][Status ...
- BZOJ 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 464 Solved: 281[Submit][Status ...
- BZOJ 4408: [Fjoi 2016]神秘数 可持久化线段树
4408: [Fjoi 2016]神秘数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 Description 一个可重复数字集 ...
- [洛谷P2106]Sam数
题目大意:问长度为$n$的$Sam$数有几个,$Sam$数的定义为没有前导零,相邻两个数字之差绝对值小于等于$2$的数 题解:发现转移方程一定,可以矩阵快速幂. 卡点:没有特判$n=1$的情况 C++ ...
- 【BZOJ4408】[Fjoi 2016]神秘数 主席树神题
[BZOJ4408][Fjoi 2016]神秘数 Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1 ...
- 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 452 Solved: 273 [Submit][Stat ...
- BZOJ 3930 Luogu P3172 选数 (莫比乌斯反演)
手动博客搬家:本文发表于20180310 11:46:11, 原地址https://blog.csdn.net/suncongbo/article/details/79506484 题目链接: (Lu ...
- luogu P5023 填数游戏
luogu loj 被这道题送退役了 题是挺有趣的,然而可能讨论比较麻烦,肝了2h 又自闭了,鉴于CSP在即,就只能先写个打表题解了 下面令\(n<m\),首先\(n=1\)时答案为\(2^m\ ...
随机推荐
- vue-cli 中eslint代码检查之过滤指定文件
在需要过滤的文件头部末尾分别添加:/* eslint-disable */,/* eslint-disable no-new */
- 《代码敲不队》第八次团队作业:Alpha冲刺 第四天
项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 代码敲不队 作业学习目标 掌握软件编码实现的工程要求. 团队项目github仓库地址链接 GitH ...
- Springboot分布式锁实践(redis)
springboot2本地锁实践一文中提到用Guava Cache实现锁机制,但在集群中就行不通了,所以我们还一般要借助类似Redis.ZooKeeper 之类的中间件实现分布式锁,下面我们将利用自定 ...
- POI 海量数据
http://blog.csdn.net/Little_Stars/article/details/8266262
- UML基本架构建模--获取类
Getting Started 開始 Modeling a system involves identifying the things that are important to your p ...
- NHibernate之旅(14):探索NHibernate中使用视图
本节内容 引入 1.持久化类 2.映射文件 3.測试 结语 引入 在数据库操作中,我们除了对表操作,还有视图.存储过程等操作,这一篇和下篇来学习这些内容.这篇我们来学习怎样在NHibernate中使用 ...
- 利用反射api查找一个类的具体信息
讲到这个实例,首先介绍下本人,我是一个php程序猿.从事drupal开发2年多.能够说从实习開始就接触这个,至今没有换过.drupal给我的感觉是俩字"强大",今天写一个views ...
- 自醒的觉悟与力量——leo鉴书59
30岁之后由于看得书多起来,阅读和写作也都有了自己的套路,与此相对的写书评之前须要看几遍书,然后我才干下笔的作者和作品越来越少了. 崔卫平是这种作者,而<正义之前>是我看了两遍才開始写评的 ...
- LeetCode——Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the inpu ...
- 大型Web 站点 Asp.net Session过期你怎么办
在 WEB 系统中. 我们通常会用session来保存一些简单可是却非常重要的信息.比方Asp.net中常常会用Session来保存用户登录信息,比方UserID.为了解决 WEB场大家採用了把ses ...