题目链接:http://codeforces.com/problemset/problem/414/B

题意:定义所有元素是其前一个元素的倍数的数列为good sequence,给出 n, 和 k,求1....n组成的长度为k的good sequence 的数目;

思路:dp

用dp[i][j]存储以 j 结尾长度为 i 的good sequence 的数目,那么我们不难发现dp[i][j]可以由dp[i-1][l] (l | j)求和得到,

即状态转移方程为:dp[i][j] = Σdp[i-1][l] (l | j);

注意我们可以先打表得到1...n的因子,不然可能会tle;

代码:

 1 #include <bits/stdc++.h>
 2 #define MAXN 2010
 3 #define ll long long
 4 using namespace std;
 5
 6 const int mod=1e9+7;
 7 ll dp[MAXN][MAXN]; //dp[i][j]表示以j结尾长度为i的good sequence的数目
 8 vector<int>v[MAXN];//v[i]存储i的因子
 9
10 int main(void){
11     int n, k;
12     cin >> n >> k;
13     for(int i=1; i<=n; i++){
14         dp[1][i]=1;
15     }
16     for(int i=1; i<=n; i++){//求i的因子
17         for(int j=1; j<=i; j++){
18             if(i%j==0){
19                 v[i].push_back(j);
20             }
21         }
22     }
23     for(int i=2; i<=k; i++){
24         for(int j=1; j<=n; j++){
25             for(int k=0; k<v[j].size(); k++){
26                 dp[i][j]=(dp[i][j]+dp[i-1][v[j][k]])%mod;
27             }
28         }
29     }
30     ll ans=0;
31     for(int i=1; i<=n; i++){
32         ans=(ans+dp[k][i])%mod;
33     }
34     cout << ans << endl;
35     return 0;
36 }

View Code

转载于:https://www.cnblogs.com/geloutingyu/p/6556027.html

cf414B(dp)相关推荐

  1. dp,sp,px相互转化

    方法一: public int sp2px(float sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, ...

  2. [JS][dp]题解 | #打家劫舍(一)#

    题解 | #打家劫舍(一)# 题目链接 打家劫舍(一) 题目描述 描述 你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家, ...

  3. HDU 2084 数塔(DP)(JAVA版)

    数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  4. dp cf 20190615

    A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果 ...

  5. BZOJ 1003[ZJOI2006]物流运输(SPFA+DP)

    Problem 1003. -- [ZJOI2006]物流运输 1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MB Submit ...

  6. [NOI2005]聪聪与可可(期望dp)

    题意:给一张无向图,有一只猫和一只老鼠,猫每秒会向老鼠的方向移动两个单位,若它们的距离为一,那么只会移动一个单位,老鼠会等概率向周围移动一步或不动,求猫抓到老鼠的期望时间. Solution luog ...

  7. Codeforces 903F Clear The Matrix(状态压缩DP)

    题目链接 Clear The Matrix 题意 给定一个$4 * n$的矩形,里面的元素为$'.'$或$'*'$.现在有$4$种正方形可以覆盖掉$'*'$,正方形的边长分别为$1,2,3,4$. 求 ...

  8. 喵哈哈村的魔法考试 Round #1 (Div.2) 题解源码(A.水+暴力,B.dp+栈)

    A.喵哈哈村的魔法石 发布时间: 2017年2月21日 20:05   最后更新: 2017年2月21日 20:06   时间限制: 1000ms   内存限制: 128M 描述 传说喵哈哈村有三种神 ...

  9. 尼克的任务 dp 洛谷1280

    蒟蒻表示老久没看过dp题目了,,挺水的一道dp题目都没想出来,,, 首先设dp[i]表示从开始到i时间的最大空闲时间,用vector to[x] 表示从x点开始的任务结束时间,cnt[x]表示从x开始 ...

最新文章

  1. 遇到的问题及解决方法
  2. bp神经网络代码_机器学习(周志华)课后习题——第五章——神经网络
  3. Apache启动错误:could not bind to address[::]:443
  4. 离散数学群论_离散数学中的群论及其类型
  5. 更换mysql_用这47 张图带你 MySQL 进阶!!!
  6. python正则表达式处理文本内容_Python处理txt文本
  7. DAY8-打卡第八天-2018-1-18
  8. (3/3) plsql使用技巧PL/SQL Developer实现双击table表名查询
  9. Nero Burning ROM 2014 16.0.03000 精简安装版(功能最强大的光盘刻录软件)
  10. Unity获取IOS端相机权限的状态
  11. [DUBBO] disconnected from 问题
  12. Java零基础必看学习教程,Java开发环境配置详解
  13. 和平精英灵敏度分享码服务器没有响应,和平精英灵敏度分享码
  14. php如何平铺背景图片,css如何让背景图片平铺?css背景图片平铺四种方式介绍
  15. 合肥工业大学——java(最新版)——第一次作业
  16. 16-内存分配与回收策略-对象优先分配Eden+大对象进老年代
  17. P2P网络电视须跨6道坎 包括网络不可控问题
  18. R语言倾向性评分:回归和分层
  19. nvm 下载安装及相关命令
  20. 最新BI报表工具对比选型指标及重点注意事项---BI报表工具选型的那些事

热门文章

  1. python3(十四)Python 异常处理
  2. 使用Pytorch进行密集视频字幕
  3. ethtool编译与内核实现介绍
  4. pjsip for Android的编译
  5. html提交多个正则表达式,将多个html文件的正则表达式结果写入.txt outfile
  6. python语言的两种注释方法_python编程时添加中文注释的方法
  7. lds天线技术流程图_音箱耳机入门,蓝牙真无线耳机中的LDS天线 「Soomal」
  8. redistemplate注入为null_Windows DLL 注入技术
  9. 【TensorFlow-windows】name_scope与variable_scope
  10. python类的空间问题及类之间的关系