本题的动态规划公式是f[i][j]=f[i][j]+f[k][j-1],表示以i结尾的长度为j的序列,k为i的因子;

不难发现,计算中存在一个状态叠加的过程,即任意一个i都是它的因子的所有情况的叠加,例如[9][3],它会是以1,3结尾的长度为2的状态的叠加;

代码如下:

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<vector>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=2000+10;
const int mod=1e9+7;
int flag[maxn][maxn];/*状态转移方程*/
vector<int>v[maxn];/*用来存放v[i]的所有因子*/
void csh()
{memset(flag,0,sizeof(flag));for(int i=1;i<maxn;i++){for(int j=1;j<maxn;j++){if(j%i==0)v[j].push_back(i);/*存放因子*/}}for(int i=1;i<maxn;i++){flag[i][1]=1;/*初始状态即以i结尾长度为1的情况都只有一种*/}for(int i=2;i<maxn;i++){for(int j=1;j<maxn;j++){for(int k=0;k<v[j].size();k++){flag[j][i]=flag[j][i]%mod+flag[v[j][k]][i-1]%mod;/*状态叠加*/}flag[i][j]%=mod;}}
}
int main()
{csh();int t;while(scanf("%d",&t)!=EOF){while(t--){int n,m;scanf("%d %d",&n,&m);long long sum=0;for(int i=1;i<=n;i++){sum=(sum+flag[i][m])%mod;}printf("%lld\n",sum);}}
}

转载于:https://www.cnblogs.com/KasenBob/p/10042178.html

zoj-4011(动态规划)相关推荐

  1. 动态规划训练25 [Food Delivery ZOJ - 3469 ]好题

    Food Delivery ZOJ - 3469 区间DP的一道好题. 在这道题里,无非就是从出发点向左走到x1再向右走到有y1,再向左走到x2,再向右走到y2....这样,一直将所有的顾客遍历完. ...

  2. zoj 1107 FatMouse and Cheese 逆向动态规划

    FatMouse and Cheese 开始试着用深度搜索做,超时了(对于时间复杂度没有概念) 这道题用动态规划.如果用自顶向下的方法,我们不知道结尾的是哪个点,所以不方便用. 如果我们采用自下而上的 ...

  3. ZOJ 1234 Chopsticks(动态规划)

    Chopsticks 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234 题目大意:给定n个筷子的长度,取k+8套筷 ...

  4. ZOJ - 2972 Hurdles of 110m(记忆化搜索/动态规划)

    题目链接:点击查看 题目大意:给定n个点,以及m的最大体力值,共有三个状态通过每个点 快速模式:消耗时间t1,消耗体力f1 匀速模式:消耗时间t2 慢速模式:消耗时间t3,恢复体力f2 问:通过n个点 ...

  5. 动态规划——区间dp

    在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...

  6. 动态规划总结与题目分类

    源博客链接:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少 ...

  7. ZOJ POJ题目分类

    ZOJ题目分类 初学者题:1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  8. 『ACM-算法-动态规划』初识DP动态规划算法

    一.多阶段决策过程的最优化问题 在现实生活中,有类活 动的过程,由于 它的特殊性,可将过程分成若干个互相阶段.在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.当阶段决策的选取不是任意确 ...

  9. (转)dp动态规划分类详解

    dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...

  10. 《动态规划》— 动态规划分类

    动态规划(英语:Dynamic programming,DP)是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最 ...

最新文章

  1. android h5状态栏消息,安卓实现系统状态栏的隐藏和显示
  2. Revit API创建几何实体Solid并找到与之相交的元素
  3. 零基础学python全彩版pdf-(特价书)零基础轻松学Python:青少年趣味编程(全彩版)...
  4. 使用 SASS Mixin 编写 clean code
  5. 计算机硬盘应该什么格式化,怎么把电脑硬盘全部格式化?计算机硬盘格式,需要使用diskgenius分区工具删除所有分区...
  6. 增量值编码器、单圈绝对值编码器、多圈绝对值编码器
  7. elasticsearch中cluster和transport知识
  8. zabbix html使用c语言写的,zabbix 自定义LLD
  9. Java 设计模式之代理模式
  10. Python+常用模块(2).md
  11. ImportError: dlopen: cannot load any more object with static TLS 解决
  12. Win10/Win8快速启动失效/卡logo 的解决方法汇总
  13. Ibatis结合MySQL数据库的使用方法
  14. 怎么注册tk域名_TK域名免费注册及解析图文教程
  15. Atmega16驱动三轴加速度传感器MMA7455
  16. C语言——今天星期几(详细注释)
  17. Allegro学习笔记:“如何建自己的Subclass”
  18. Python + Django 入门级开发手顺
  19. 似然函数和最大似然估计
  20. 生僻字存不到mysql_数据库存储生僻字存在的问题

热门文章

  1. trackback (引用通告) 说明
  2. java udp 服务器_Java UDP 服务器与客户端的问题
  3. CAMWorks ShopFloor 2020中文版
  4. 数学:统计:基本概念
  5. 使用scanf()函数接收带空格的字符串
  6. 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂
  7. VS2005中,C#中跨线程访问控件问题解决方案
  8. Django的模板继承
  9. 实战mariadb-galera集群架构
  10. Uva 11732 strcmp()函数