线性dp-建造房屋

embedded/2025/2/9 10:08:13/

问题描述

小蓝和小桥是两位年轻的建筑师,他们正在设计一座新的城市。

在这个城市中,有 N 条街道,每条街道上都有 M 个位置可以建造房屋(一个位置只能建造一个房屋)。建造一个房屋的费用为 1 元,小蓝和小桥共有 K 元的建造预算。

现在,他们想知道,一共有多少种建造方案,满足以下要求:

  • 在每条街道上,至少建一个房屋。
  • 建造的总成本不能超过 K 元。

由于方案数可能很大,他们只需要输出答案对 109+7 取模的结果。

输入格式

一行三个整数 N,M(1≤N,M≤50) 和 K(1≤K≤N⋅M),分别表示街道数、街道的位置数和预算。

输出格式

一个整数,表示满足条件的建造方案数对 109+7 取模的结果。

样例输入

2 3 5

样例输出

8

题解

dp[i][j] 表示到第i条街道共修了j个房屋的方案数

假设当前街道要建l个房子,那么

dp[i][j] += dp[i - 1][j - l], l <= m && j - l >= i - 1

(当前街道不能建超过m个房屋,并且对于前i - 1个街道,修建的房屋至少是i - 1)。

代码

#include<bits/stdc++.h>
using namespace std;
using ll = long long;const int N = 55;
ll p = 1e9 + 7;
ll dp[N][N * N];int main(){ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int n,m, k;cin >> n >> m >> k;for(int i = 0;i <= k;i ++)dp[0][i] = 1;for(int i = 1;i <= n;i ++)for(int j = 1;j <= k;j ++)for(int l = 1;l <= m && j - l >= i - 1;l ++)dp[i][j] = (dp[i][j] + dp[i - 1][j - l]) % p;cout << dp[n][k] << '\n';return 0;
}


http://www.ppmy.cn/embedded/160777.html

相关文章

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展&#xff0c;以DeepSeek为代表的大语言模型&#xff08;LLM&#xff09;正在逐步渗透到传统硬件开发领域。在FPGA&#xff08;现场可编程门阵列&#xff09;和IC&#xff08;集成电路&#xff09;开发这一技术密集型行业中&#xff0c;DeepSeek凭借其…

2024最新版Java学习路线图--Java语言进阶重点知识

局部内部类的使用 匿名内部类的使用 匿名内部类在开发中的应用 常用API Math类及其常用方法 System类及其常用方法 Object类的toString()和equals()方法 Arrays类及其常用方法 冒泡排序的原理分析及代码实现 基本类型的包装类 自动拆箱和自动装箱 日期Date类型及其常…

Windows图形界面(GUI)-QT-C/C++ - QT Dock Widget

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、概述 二、使用场景 1. 工具栏 2. 侧边栏 3. 调试窗口 三、常见样式 1. 停靠位置 2. 浮动窗口 3. 可关闭 4. 可移动 四、属性设置 1. 设置内容 2. 获取内容 3. 设置标题 …

ubuntu 22.04 cuda12.x 上 cutensor 1.6.2 版本环境搭建

ubuntu 22.04 cuda12.x 运行 cutensor 1.6.2 sample 1.6.2 是比较久的cutensor 版本&#xff0c;但是nv对新的cuda 平台做了继续支持&#xff0c;故可以在cuda sdk 12上使用cutensor 1.6.2 1&#xff0c;下载libcutensor 1.6.2 下载 cutensor 1.6.2 for all Linux and all …

华为支付-免密支付接入签约代扣场景开发步骤

一、预签约&#xff08;服务器开发&#xff09; 1.开发者按照商户模型调用预直连商户预签约或服务商预签约接口获取preSignNo构建签约信息参数contractStr。 为保证支付订单的安全性和可靠性需要对请求body和请求头PayMercAuth对象内的入参排序拼接进行签名。请参考排序拼接和…

DeepSeek 提示词之角色扮演的使用技巧

老六哥的小提示&#xff1a;我们可能不会被AI轻易淘汰&#xff0c;但是会被“会使用AI的人”淘汰。 在DeepSeek的官方提示库中&#xff0c;有“角色扮演&#xff08;自定义人设&#xff09;”的提示词案例。截图如下&#xff1a; 在“角色扮演”的提示词案例中&#xff0c;其实…

【第一篇章】 C++ 初识

一、进门首先说 say hello 编写 helloworld.cpp 的文件&#xff0c;具体内容如下&#xff1a; #include <iostream> using namespace std; int main() {cout << "Hello, world!" << endl;return 0; }编译文件 g helloworld.cpp -o helloworld运…

python中的flask框架

Flask 是一个用Python编写的轻量级Web应用框架 基于WSGI和Jinja2模板引擎 被称为“微框架”&#xff0c;其核心功能简单&#xff0c;不捆绑数据库管理、表单验证等功能&#xff0c;而是通过扩展来增加其他功能 Flask提供最基本的功能&#xff0c;不强制使用特定工具或库 通…