牛客 Bang! Bang!(动态规划)

文章目录

    • 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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Andorid 反编译App

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/23564065 开发的过程中&#xff0c;有时候可能会去使用别的app里面的图片&#xff0c;参考布局甚至代码等&#xff0c;但是一般的.apk都是经过代码混淆的&#xff0c;这里分享下使用一些工具进行…

Ubuntu Linux系统下搭建自己的Web服务器

经常被拿来当服务器的有CentOS、Ubuntu......考虑到自己只有Ubuntu的镜像并且只是自己做一些简单的测试使用&#xff0c;所以选择的版本是Ubuntu 14.04 LTS。在这个平台上搭建自己的Web服务器。 相比在Windows下的wamp集成环境&#xff0c;Linux系统下同样有LAMP&#xff0c;不…

天池 在线编程 安排面试城市(贪心)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/210874425247820050/215397455965131520 今天有N个面试者需要面试&#xff0c;公司安排了两个面试的城市A和B&#xff0c;每一个面试者都有到A城市的开销costA和到B城市的开销costB。 公司需要…

天池 在线编程 捡胡萝卜(模拟)

文章目录1. 题目2. 解题1. 题目 来源&#xff1a;https://tianchi.aliyun.com/oj/210874425247820050/215397455965131519 给定一个n * m 的矩阵 carrot, carrot[i][j] 表示(i, j) 坐标上的胡萝卜数量。 从矩阵的中心点出发&#xff0c;每一次移动都朝着四个方向中胡萝卜数量…

VMware中ubuntu虚拟机与windows的端口映射,共享一个IP地址

在ubuntu虚拟机中&#xff0c;运行了meteor的后台程序&#xff0c;需要终端进行连接&#xff0c;需要进行ubuntu虚拟机与windows的端口映射&#xff08;虚拟机与主机共享IP地址&#xff09;。 下面为设置步骤&#xff1a; 1.点击编译&#xff0c;虚拟网络编辑器2.在虚拟网络编辑…

LeetCode 1678. 设计 Goal 解析器

文章目录1. 题目2. 解题1. 题目 请你设计一个可以解释字符串 command 的 Goal 解析器 。 command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成。 Goal 解析器会将 “G” 解释为字符串 “G”、 “()” 解释为字符串 “o” &#xff0c; “(al)” …

Jmeter使用入门

Jmeter简介Jmeter的基本概念百度百科&#xff1a;Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 它可以用于测试静态和动态资源&#xff0c;例如静态文件、Jav…

阿里云 Windows Server 2022 安装 Docker

阿里云Windows Server 2022 安装 Docker 文章目录 情景尝试正解 安装Docker管理工具安装Docker重启系统配置Docker系统路径配置Docker引擎(也许不用)启动Docker服务 情景 情景&#xff1a;最近一直在搞微服务&#xff0c;团队的服务器是阿里云的 Windows Server 2022&…

LeetCode 1679. K 和数对的最大数目(哈希)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个整数 k 。 每一步操作中&#xff0c;你需要从数组中选出和为 k 的两个整数&#xff0c;并将它们移出数组。 返回你可以对数组执行的最大操作数。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,4], k 5 输…

正则表达式之 贪婪与非贪婪模式详解

1 概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为&#xff0c;贪婪模式在整个表达式匹配成功的前提下&#xff0c;尽可能多的匹配&#xff0c;而非贪婪模式在整个表达式匹配成功的前提下&#xff0c;尽可能少的匹配。非贪婪模式只被部分NFA引擎所支持。 属于贪婪…

LeetCode 1680. 连接连续二进制数字(位运算)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;请你将 1 到 n 的二进制表示连接起来&#xff0c;并返回连接结果对应的 十进制 数字对 10^9 7 取余的结果。 示例 1&#xff1a; 输入&#xff1a;n 1 输出&#xff1a;1 解释&#xff1a;二进制的 "1"…

网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/23866427 今天又遇到一个网页数据抓取的任务&#xff0c;给大家分享下。 说道网页信息抓取&#xff0c;相信Jsoup基本是首选的工具&#xff0c;完全的类JQuery操作&#xff0c;让人感觉很舒服。但…

jmeter进行http压力测试(图文小教程)

下载地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgiJMeter基于Java开发&#xff0c;需要系统有安装JDK环境。解压后进入bin目录&#xff0c;点击jmeter.bat1、添加线程组&#xff1a; 测试计划 -> 添加 -> Threads(User) -> 线程组&#xff0c;添加后…

LeetCode 1681. 最小不兼容性(回溯+剪枝)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums​​​ 和一个整数 k 。你需要将这个数组划分到 k 个相同大小的子集中&#xff0c;使得同一个子集里面没有两个相同的元素。 一个子集的 不兼容性 是该子集里面最大值和最小值的差。 请你返回将数组分成 k 个子集后&…

使用CNN进行情感分类

文章目录1. 读取数据2. 数据集拆分3. 文本向量化4. 建立CNN模型5. 训练、测试参考 基于深度学习的自然语言处理 1. 读取数据 数据文件&#xff1a; import numpy as np import pandas as pddata pd.read_csv("yelp_labelled.txt", sep\t, names[sentence, label…

人生苦短,我用Python(Python快速教程 - 基础篇)

Life is short, you need Python 人生苦短&#xff0c;我用Python -- Bruce Eckel 5.1 Python简介 本章将介绍Python的最基本语法&#xff0c;以及一些和深度学习还有计算机视觉最相关的基本使用。 5.1.1 Python简史 Python是一门解释型的高级编程语言&#xff0c;特点是简单明…

A5营销:传统企业站优化正文内容在SEO方面的三大注意事项

关于网站的正文内容&#xff0c;相信站长们都应该比较清楚正文内容的作用以及给网站所带来的价值&#xff0c;优质的网站正文内容可以给用户带来阅读体验和帮助、可以给网站带来庞大的流量、可以让蜘蛛一次吃个饱等等。当然&#xff0c;优质的正文内容不光是内容的质量正重要&a…

LeetCode 1000. 合并石头的最低成本(区间DP)

文章目录1. 题目2. 解题1. 题目 有 N 堆石头排成一排&#xff0c;第 i 堆中有 stones[i] 块石头。 每次移动&#xff08;move&#xff09;需要将连续的 K 堆石头合并为一堆&#xff0c;而这个移动的成本为这 K 堆石头的总数。 找出把所有石头合并成一堆的最低成本。如果不可…

Android 自定义View (一)

转载请标明出处&#xff1a;http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View&#xff0c;可能都是比较恐惧的&#xff0c;但是这又是高手进阶的必经之路&#xff0c;所有准备在自定义View上面花一些功夫&#x…

LeetCode 995. K 连续位的最小翻转次数(差分思想)

文章目录1. 题目2. 解题1. 题目 在仅包含 0 和 1 的数组 A 中&#xff0c;一次 K 位翻转包括选择一个长度为 K 的&#xff08;连续&#xff09;子数组&#xff0c;同时将子数组中的每个 0 更改为 1&#xff0c;而每个 1 更改为 0。 返回所需的 K 位翻转的次数&#xff0c;以便…