文章目录

  • 1. 题目
  • 2. 解题

1. 题目

链接:https://ac.nowcoder.com/acm/contest/9715/C
来源:牛客网

音游狂热爱好者牛牛接到了一个新的任务,那就是给一张乐谱设计重音符。每当玩家敲击重音符的时候就会发出"bang"的美妙声音!!

每一张乐谱都有n个音符从左到右一字排开,现在牛牛的任务就是选出其中m个音符将其标记为重音符,同时任意两个重音符之间都必须隔着至少k个音符。

一个有意思的问题诞生了,请求出这样合法的设计方案种数,并输出答案对1000000007取模的结果。

示例1
输入
3,2,1
返回值
1

备注:

2. 解题

  • dp[pos][time] 表示在位置 pos 时,第 time 次的方案数
class Solution {public:/*** * @param n int整型 乐谱总音符数* @param m int整型 重音符数* @param k int整型 重音符之间至少的间隔* @return long长整型*/typedef long long ll;long long solve_bangbang(int n, int m, int k) {// write code hereif(m == 0) return 1;int mod = 1e9+7;vector<vector<ll>> dp(n, vector<ll>(m+1, 0));for(int i = 0; i < n; i++)dp[i][1] = 1;for(int t = 2; t <= m; t++){for(int i = 0; i < n; ++i){if(dp[i][t-1] == 0)continue;for(int j = i+k+1; j < n; ++j){dp[j][t] += dp[i][t-1];dp[j][t] = (dp[j][t]%mod);}}}ll ans = 0;for(int i = 0; i < n; ++i)ans = (ans+dp[i][m])%mod;return ans;}
};

227ms

class Solution {public:/*** * @param n int整型 乐谱总音符数* @param m int整型 重音符数* @param k int整型 重音符之间至少的间隔* @return long长整型*/typedef long long ll;long long solve_bangbang(int n, int m, int k) {// write code hereif(m == 0) return 1;int mod = 1e9+7;vector<vector<ll>> dp(n, vector<ll>(m+1, 0));for(int i = 0; i < n; i++)dp[i][1] = 1;for(int i = 1; i < n; ++i){if(i-k-1 >= 0)for(int t = 1; t < m; t++){dp[i][t+1] = dp[i-k-1][t];}for(int t = 1; t <= m; t++){dp[i][t] += dp[i-1][t];dp[i][t] %= mod;}}return dp[n-1][m];}
};

4ms


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

牛客 Bang! Bang!(动态规划)相关推荐

  1. 牛客刷题动态规划之最长递增子序列

    题目描述 给定数组arr,设长度为n,输出arr的最长递增子序列.(如果有多个答案,请输出其中字典序最小的) 示例1 输入 [2,1,5,3,6,4,8,9,7] 输出 [1,3,4,8,9] 示例2 ...

  2. java 牛客网之[动态规划 简单]NC3 nico和niconiconi

    题目的链接在这里:https://www.nowcoder.com/practice/70a03345bae6499ea4338ebc3a0b60e9 目录 题目大意 一.示意图 二.解题思路 字符串 ...

  3. java 牛客网之[动态规划 简单]NC4 【模板】前缀和

    题目的链接在这里:https://www.nowcoder.com/practice/acead2f4c28c401889915da98ecdc6bf 目录 题目大意 一.示意图 二.解题思路 超时代 ...

  4. 方格走法-牛客网(排列组合和动态规划)

    方格走法-牛客网 题目描述 有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走.请设计一个算法,计算小团有多少种走法.给定两个正整数int x,int y,请返回小团的 ...

  5. 牛客网NC77-20.7.23-dp(动态规划?)

    链接:牛客网NC77链接 题意: 输入:n,x,a[] (n<=20,x<=100,a[i][0]<=50,a[i][1]<=20) 输出:方法数 分析:想象这些钱是一堆一堆的 ...

  6. 牛客:【2021秋季算法入门班第七章习题:动态规划1】部分题解:方块与收纳盒、舔狗舔到最后一无所有、可爱の星空、[NOIP1999]拦截导弹

    题单链接:牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com)  P1001 方块与收纳盒 传送门:1001-方块与收纳盒_2021秋季 ...

  7. 牛客竞赛每日俩题 - 动态规划4

    目录 经典dp1(最长公共序列) 经典dp2(最长上升子序列 ) 经典dp(最长公共序列) 最长公共子序列__牛客网 解析: 有两个字符串T和S,S的长度为n T的长度为m 状态:f[i][j] 表示 ...

  8. 牛客竞赛每日俩题 - 动态规划1

    目录 DP入门(存储之前状态以简化) DP解决最短路问题 DP入门(存储之前状态以简化) 拆分词句_牛客题霸_牛客网 思路: 方法:动态规划 状态:         子状态:前1 , 2 , 3 , ...

  9. [牛客][NOIP2000提高组]乘积最大(Java)(动态规划+高精度)

    原题链接:乘积最大 链接:https://ac.nowcoder.com/acm/problem/16757 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144 ...

最新文章

  1. Javascript s02
  2. 一个在菜场看到的,神一般的大爷!
  3. python爬虫原理-python爬虫原理详细讲解
  4. Android Monkey的使用
  5. 【JUC】第六章 Fork/Join 框架、CompletableFuture
  6. 从join on和where执行顺序认识T-SQL查询处理执行顺序
  7. flutter框架优缺点_小程序框架全面测评
  8. python安装tensorflow失败解决办法_pip安装tensorflow总是失败怎么办?
  9. C语言课设----个人信息管理系统(包含学生成绩和消费记录)
  10. 使用switchhost进行host文件管理
  11. 用核废料制成“钻石电池”,不充电能让汽车跑100年?
  12. Gstreamer uridecodebin 插件手动选择解码器
  13. wow Warlock shushia PVP DZ
  14. 伊拉克COR证书电子电器
  15. java开发爱恩斯坦棋,爱恩斯坦棋计算机博弈系统的研究与实现
  16. Bootstrap实战 - 响应式布局
  17. 银行案例分析:识别个人贷款客户画像,实现精准营销与风险防范
  18. Python气象绘图笔记——常用气象绘图函数脚本封装与使用记录
  19. 【毕业设计 大作业高分项目】html+php实现个人博客网站
  20. 交易撮合系统···实现得比较简陋

热门文章

  1. 实数是不是python数据类型_python 基本数据类型
  2. django2.x报错No module named 'django.core.urlresolvers'
  3. 三个数相减的平方公式_快收好这份小学数学公式大全!孩子遇到数学难题时肯定用得上...
  4. 苹果应用上架,图片的要求(2017年4月27日)
  5. Java实现连连看源代码文档_Java实现游戏连连看(有源代码)
  6. C++多态相关关问题及虚表剖析
  7. asp.net matlab,ASP.NET与MATLAB混合编译以及数据传递【更新中】
  8. 什么时候需要好教材和好教材是怎样的
  9. 解决python中遇到的乱码问题
  10. 《C程序设计语言》-第2章-习题