【DP】序列 题解

序列

题目

一个长度为kkk的整数序列bbb 1,bbb 2,…,bkbkbk(1≤bbb 1≤bbb 2≤…≤bkbkbk≤NNN)称为“好序列”当且仅当后一个数是前一个数的倍数,即bibibi+1是bibibi的倍数对任意的i(1≤iii≤kkk-1)成立。
给定NNN和kkk,请算出有多少个长度为4、kkk的“好序列”,答案对1000000007取模。


输入

输入共1行,包含2个用空格隔开的整数NNN和kkk。


输出

输出共1行,包含一个整数,表示长度为kkk的“好序列”的个数对1000000007取模后的结果。


样例

input
3 2

output
5


说明

【输入输出样例说明】
“好序列”为:[1,1],[1,2],[1,3],[2,2],[3,3]。

【数据说明】
对于40%的数据,1≤NNN≤30,1≤kkk≤10。
对于100%的数据,1≤NNN≤2000,1≤kkk≤2000。


解题思路

f[i][j]表示长度为i,以j为最后一个数的“好序列”个数
动态转移方程:
枚举iii,jjj,以及jjj的倍数kkk*jjj
f[i+1][k∗j]=(f[i+1][k∗j]+f[i][j])f[i+1][k*j]=(f[i+1][k*j]+f[i][j])f[i+1][k∗j]=(f[i+1][k∗j]+f[i][j])%1000000007;


代码

#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
long long f[2100][2100],ans;
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)f[1][i]=1;  //赋初值for (int i=1;i<m;i++)  //枚举前一个状态的长度{for (int j=n;j>0;j--)  //枚举前一个状态的最后一个数for (int k=1;k*j<=n;k++)  //枚举下一个状态最后一个数是前一个状态的几倍f[i+1][k*j]=(f[i+1][k*j]+f[i][j])%1000000007;  //转移}for (int i=1;i<=n;i++)ans=(ans+f[m][i])%1000000007;  //累加这个长度下,最后一个数小于等于n的个数printf("%lld",ans);return 0;
}

【DP】序列 题解相关推荐

  1. 算法设计与分析第4章 动态规划(二)【DP序列问题】

    第3章 动态规划(二)[DP序列问题] 3.2 DP序列问题 (51nod的动态规划教程很不错,讲解很详细,以下分析来自51nod) 1.矩阵取数问题 给定一个m行n列的矩阵,矩阵每个元素是一个正整数 ...

  2. FJUT Home_W的拆分序列(DP)题解

    Problem Description Home 现在给你一个序列要求你将这个序列拆成恰好两个子序列.且使得两个子序列的抖动系数之和最大. 对于一个序列c1,c2,c3,--cm. 其抖动系数=|c1 ...

  3. Codeforces 1050D Three Religions (dp+序列自动机)

    题意: 给一个1e5的串str,然后有三个起始空串,不超过1000次操作,对三个字符串的一个尾部加一个字符或者减一个字符,保证每个字符不会超过250 每次操作之后询问你这三个串是不是可以组成str的子 ...

  4. 动态规划 —— 线性 DP —— 序列问题

    [基本概念] 子序列: 一个序列 A=a1,a2,--an 中任意删除若干项,剩余的序列叫做 A 的一个子序列.也可以认为是从序列 A 按原顺序保留任意若干项得到的序列.(例如:对序列{1,3,5,4 ...

  5. ZOJ 3962 Seven Segment Display(数位DP)题解

    题意:给一个16进制8位数,给定每个数字的贡献,问你贡献和. 思路:数位DP,想了很久用什么表示状态,看题解说用和就行,其他的都算是比较正常的数位DP. 代码: #include<iostrea ...

  6. AcWing1064.骑士(状压DP)题解

    Acwing.骑士(状压DP) 题目传送门 题目描述 在 n×n 的棋盘上放 k 个国王,国王可攻击相邻的 8 个格子,求使它们无法互相攻击的方案总数. 输入格式 共一行,包含两个整数 n 和 k. ...

  7. AcWing292.炮兵阵地(状压DP)题解

    Acwing.炮兵阵地 题目传送门 题目描述 司令部的将军们打算在N * M的网格地图上部署他们的炮兵部队.一个N * M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表 ...

  8. 抄书问题2 (复制书稿) 单调性优化dp + 序列划分模型

    3163 抄书问题 2  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解 题目描述 Description 现在要把M本有顺序的书分给K个人复制(抄写 ...

  9. 【NOIP 模拟赛】平均数 涂色游戏 序列题解

    吐槽(完跪):神tmNOIP模拟赛,看到大题头根本高级数据结构什么的想都没想,结果死的很惨,第三题竟然要可持久化线段树,这NOIP我服了. 平均数: 这道题40分相信大家都能拿到,剩下的60分讲真考验 ...

最新文章

  1. Backlog和冲刺结果以及产品Demo市场调研
  2. 【虚拟化】Linux中安装配置Docker
  3. P4762-[CERC2014]Virus synthesis【PAM,dp】
  4. CentOS6.5安装Tab增强版:bash-completion
  5. AswanEx助力区块链+数字资产更好融合落地
  6. java群发邮件_161013、java实现邮件群发带附件
  7. 企业打款创建X509Certificate2对象时内部出错
  8. c语言程序不能运行,C语言编程,我写了一个程序,但不能运行.
  9. 简易nodejs服务器
  10. Java核心技术卷1基础知识课程-专题视频课程
  11. ollydbg调试使用
  12. 洛谷入门5——口算练习题
  13. python系统开发_证券交易系统设计与开发
  14. 陆羽茶交所严建红:陆羽茶产业互联网三螺旋模式
  15. 区块链基础知识与关键技术解析
  16. 热点分析 (Getis-Ord Gi*) 的工作原理
  17. (裴蜀定理)ax + by = m 有解,当且仅当 m 是 gcd(a,b) 的倍数
  18. CDEC2021 | 智领云CTO宋文欣:构建云原生数据中台,赋能合作伙伴
  19. WebRTC初学Demo
  20. 软件测试 毕业设计任务书,软件测试任务书

热门文章

  1. 9.22 C语言自学笔记
  2. arm基本了解(笔记)
  3. Succeeding with Object databases: a practical look at today's implementations with Java and XML
  4. 百度API调用失败解决方法
  5. 嵌入式linux包含哪些内容
  6. iOS学习:调用相机,选择图片上传,带预览功能
  7. 发现一款感觉很不错的学英语软件:Rosseta Stone
  8. 微信小程序 修改键盘的回车键
  9. Vue.js - 插件的使用
  10. M.2 SSD接口详解