zoj-4011(动态规划)
本题的动态规划公式是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(动态规划)相关推荐
- 动态规划训练25 [Food Delivery ZOJ - 3469 ]好题
Food Delivery ZOJ - 3469 区间DP的一道好题. 在这道题里,无非就是从出发点向左走到x1再向右走到有y1,再向左走到x2,再向右走到y2....这样,一直将所有的顾客遍历完. ...
- zoj 1107 FatMouse and Cheese 逆向动态规划
FatMouse and Cheese 开始试着用深度搜索做,超时了(对于时间复杂度没有概念) 这道题用动态规划.如果用自顶向下的方法,我们不知道结尾的是哪个点,所以不方便用. 如果我们采用自下而上的 ...
- ZOJ 1234 Chopsticks(动态规划)
Chopsticks 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=234 题目大意:给定n个筷子的长度,取k+8套筷 ...
- ZOJ - 2972 Hurdles of 110m(记忆化搜索/动态规划)
题目链接:点击查看 题目大意:给定n个点,以及m的最大体力值,共有三个状态通过每个点 快速模式:消耗时间t1,消耗体力f1 匀速模式:消耗时间t2 慢速模式:消耗时间t3,恢复体力f2 问:通过n个点 ...
- 动态规划——区间dp
在利用动态规划解决的一些实际问题当中,一类是基于区间上进行的,总的来说,这种区间dp是属于线性dp的一种.但是我们为了更好的分类,这里仍将其单独拿出进行分析讨论. 让我们结合一个题目开始对区间dp的探 ...
- 动态规划总结与题目分类
源博客链接:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少 ...
- ZOJ POJ题目分类
ZOJ题目分类 初学者题:1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...
- 『ACM-算法-动态规划』初识DP动态规划算法
一.多阶段决策过程的最优化问题 在现实生活中,有类活 动的过程,由于 它的特殊性,可将过程分成若干个互相阶段.在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果.当阶段决策的选取不是任意确 ...
- (转)dp动态规划分类详解
dp动态规划分类详解 转自:http://blog.csdn.NET/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间 ...
- 《动态规划》— 动态规划分类
动态规划(英语:Dynamic programming,DP)是一种在数学.计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法. 动态规划常常适用于有重叠子问题和最 ...
最新文章
- android h5状态栏消息,安卓实现系统状态栏的隐藏和显示
- Revit API创建几何实体Solid并找到与之相交的元素
- 零基础学python全彩版pdf-(特价书)零基础轻松学Python:青少年趣味编程(全彩版)...
- 使用 SASS Mixin 编写 clean code
- 计算机硬盘应该什么格式化,怎么把电脑硬盘全部格式化?计算机硬盘格式,需要使用diskgenius分区工具删除所有分区...
- 增量值编码器、单圈绝对值编码器、多圈绝对值编码器
- elasticsearch中cluster和transport知识
- zabbix html使用c语言写的,zabbix 自定义LLD
- Java 设计模式之代理模式
- Python+常用模块(2).md
- ImportError: dlopen: cannot load any more object with static TLS 解决
- Win10/Win8快速启动失效/卡logo 的解决方法汇总
- Ibatis结合MySQL数据库的使用方法
- 怎么注册tk域名_TK域名免费注册及解析图文教程
- Atmega16驱动三轴加速度传感器MMA7455
- C语言——今天星期几(详细注释)
- Allegro学习笔记:“如何建自己的Subclass”
- Python + Django 入门级开发手顺
- 似然函数和最大似然估计
- 生僻字存不到mysql_数据库存储生僻字存在的问题