Luogu P1140.数的划分

news2024/10/7 20:25:22

P1140 数的划分

原题点这里

思路

这是一道动态规划的题目。

步骤主要分 5 5 5 步:

  1. 状态的定义
  2. 转移式的推到
  3. 递推顺序的判定
  4. 边界的确定
  5. 结果的输出

下面,我们针对这道题,细细地讲解一下每一个步骤

一、状态的定义

这道题的状态最简单,又直白——就是 f i , j f_{i, j} fi,j 表示数字 i i i,划分成 j j j 个部分的方案数。
对于状态的定义大家可以多去试一试,不行了就换一种思路,做多了就会有思路,一般的定义所具备的都是至少有一个 f i f_i fi 代表是第 i i i 个。

二、转移式的推到

一般情况下,如果状态找对了,那么转移式便会呼之欲出了。

这道题比较难想,运用到分类讨论的思想!

情况1:

如果分出的数中,有一个 1 1 1,那么 f i , j f_{i, j} fi,j 的方案数其实就与 f i − 1 , j − 1 f_{i - 1, j - 1} fi1,j1 的方案数相同。

可以这样考虑:如果有一个 1 1 1,去掉这个 1 1 1 之后就会有 j − 1 j - 1 j1 个部分,总和也会因 − 1 -1 1 而跟随着 − 1 -1 1,故总和为 i − 1 i - 1 i1,此时少了个 1 1 1 不会影响其他数的方案数

情况2:

如果分出的数中,没有 1 1 1,那么 f i , j f_{i, j} fi,j 的方案数其实就与 f i − j , j f_{i - j, j} fij,j 相同。

可以这样考虑:如果有一个 1 1 1,每一个部分减掉这个 1 1 1 之后还是 j j j 个部分,总和也会因每个部分 − 1 -1 1 而跟随着 − j -j j,故总和为 i − j i - j ij,此时每一组少了个 1 1 1 不会影响方案数

综上所述:
f i , j = f i − 1 , j − 1 + f i − j , j \large f_{i, j} = f_{i - 1, j - 1} + f_{i - j, j} fi,j=fi1,j1+fij,j

三、递推顺序的判定

这一部分就很简单了,对于这道题因为我们发现一定会要么相同,要么由前面的状态所转移。

为了保持无后效性,我们需采用由小到大的顺序枚举

四、边界的确定

这道题大家可以想一想,如果一个数只划分成 1 1 1 份,那么方案数只有 1 1 1 种。

所以,这就是我们初始化的内容:将 f i , 1 f_{i, 1} fi,1 全部初始化为 1 1 1

一般情况下,边界都是初始化最初用到的值。

五、结果的输出

根据我们的状态的定义,不难确定出答案就是 f n , k f_{n, k} fn,k n , k n, k n,k就是题目中所说的)

香喷喷的代码来了

#include <iostream>

using namespace std;

const int N = 1e3 + 10;

int n, k;
int f[N][N];

int main()
{
    cin >> n >> k;
    
    for (int i = 1; i <= n; i ++) f[i][1] = 1;
    for (int i = 2; i <= n; i ++)
        for (int j = 2; j <= min(i, k); j ++)
            f[i][j] = f[i - 1][j - 1] + f[i - j][j];
            
    cout << f[n][k] << endl;
}

最后祝大家早日——
在这里插入图片描述
烈火熊熊灼尔等,宁为玉碎不瓦全

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

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

相关文章

面试题分析:统计网站访问次数

难度&#xff1a;较低 平台的访问量非常高&#xff0c;需要实时统计网站的访问次数&#xff0c;请设计一个计数器解决&#xff1a;初级工程师&#xff0c;可能回答使用synchronized锁或重入锁&#xff0c;进一步探讨&#xff0c;synchronized锁太重&#xff0c;有没其他方式&a…

redisson中Semaphore的信号量介绍及其原理

目录 1 基本介绍 1.1API介绍 1.2 示例 2 源码解析 2.1 Semaphore设置许可数量&#xff08;trySetPermits(int permits)&#xff09; 2.2 尝试获取许可&#xff08;boolean tryAcquire()&#xff09; 3 Lua脚本 3.1 加锁lua脚本 3.2 解锁lua脚本 1 基本介绍 Semaphore通…

科技资讯|苹果Vision Pro新专利曝光,与消除晕动症的技术有关

欧洲专利局发布了一份苹果专利&#xff0c;与消除 Apple Vision Pro 晕动病背后的一些工作有关。苹果通过推出新的 R1 处理器实现了这一目标&#xff0c;苹果专利提供了处理器背后的一些详细技术信息&#xff0c;在第 86 号专利点指出&#xff1a;" 在某些实施方案中&…

驾驭计算机视觉的翅膀:论文找代码的几种必杀技!

摘要 对于CVer来说&#xff0c;「代码和找代码」能力都是一种很重要的能力&#xff0c;毕竟idea再好只有通过代码实现出来才能发文章和刷榜。当我们阅读一篇高质量或者英文论文时&#xff0c;如何去找到该文章实现的代码&#xff0c;进而结合文章内容和代码实现去更好的理解作…

PoseiSwap 更新第二期空投,持有 Zepoch 节点数量将决定空投回报

Nautilus Chain 是行业内首个模块化 Layer3 架构链&#xff0c;开发者能够基于模块化进行定制化开发&#xff0c;并有望进一步推动 Web3 应用向隐私、合规等方向发展。当然&#xff0c;Nautilus Chain 的特殊之处还在于为生态用户带来丰厚的空投预期&#xff0c;据悉上线 Nauti…

基于matlab使用标记增强技术将虚拟内容呈现到现实场景中(附源码)

一、前言 此示例演示如何使用基于标记的增强现实将虚拟内容呈现到场景中。 增强现实 &#xff08;AR&#xff09; 通过自然混合真实和虚拟内容来增强现实世界的场景&#xff0c;从而创建新颖的应用程序。例如&#xff0c;增强现实应用程序可以添加虚拟标尺&#xff0c;使用户…

如何正确使用 ThreadLocal

1 前言 当多线程访问共享且可变的数据时&#xff0c;涉及到线程间同步的问题&#xff0c;并不是所有时候&#xff0c;都要用到共享数据&#xff0c;所以就需要ThreadLocal出场了。 ThreadLocal又称线程本地变量&#xff0c;使用其能够将数据封闭在各自的线程中&#xff0c;每…

数据管理成熟度评估DCMM之生产企业数据战略管理办法

生产企业数据战略管理办法 第一部分&#xff1a;导言 随着信息技术的快速发展和数据规模的急剧增长&#xff0c;生产企业越来越重视数据的价值和管理。有效的数据战略管理办法可以帮助生产企业更好地管理和利用数据资源&#xff0c;提高运营效率、决策质量和创新能力。本文将…

SpringMVC数据传递总结

文章目录 1. 分析总结2. 普通格式数据2.1 普通参数2.2 pojo参数2.3 嵌套pojo参数2.4 数组 -- 普通参数2.5 集合 -- 普通参数2.6 web容器添加过滤器指定字符集 3. JSON格式数据3.1 相关准备3.2 json数组(基本)3.3 json对象(pojo)3.4 json数组(pojo) 1. 分析总结 1.1 普通格式数据…

K8S平台安全框架

平台安全框架 1 平台安全框架1.1 安全框架1.1.1 认证框架1.1.2 框架解读 1.2 认证实践1.2.1 令牌用户1.2.2 证书用户 1.3 授权实践1.3.1 集群用户1.3.2 角色基础1.3.3 授权基础1.3.4 用户组实践1.3.5 SA授权1.3.6 SA秘钥 1.4 准入实践1.4.1 准入基础1.4.2 优先调度1.4.3 资源配…

F2-NeRF阅读日志

看到了一篇很好的paper&#xff0c;记录一下&#xff0c;参考&#xff1a; https://www.bilibili.com/video/BV1Lz4y187jL/?spm_id_from333.337.search-card.all.click&vd_sourcea059a118f33728f79abd79e02f8f72d4 https://zhuanlan.zhihu.com/p/618362291 latex写的&am…

Qt5编译使用QFtp模块(环境:win+Qt5.15.2+msvc2019)

目录 QFtp下载编译配置QFtp模块测试 QFtp下载 下载方式较多&#xff0c;可以从github上进行下载&#xff1a;https://github.com/qt/qtftp.git 。 我已将下载好的ftp源码资源放出来了&#xff0c;可以直接下载0积分&#xff1a;链接跳转。 编译 使用Qt Create打开工程后&…

DuDuTalk:4G录音工牌在汽车试乘试驾场景中有什么独特应用价值?

在市场竞争越来越激烈的今天&#xff0c;不管是新能源市场还是燃油车市场&#xff0c;试乘试驾已经当仁不让地成为了几乎所有汽车品牌关注的焦点。特斯拉、“蔚小理”、奔驰、宝马等头部品牌&#xff0c;对于试乘试驾的重视度一定程度上甚至已经超过了展厅接待。 然而&#xf…

解决notion共享网址无法复制的问题

1、打开url Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 2、选中要复制的内容。 3、右击鼠标&#xff0c;选择“打印” 4、在打印界面中选中要复制的内容&#xff0c;然后按“复制” 复制完成。

Stable Difussion能做什么?

​扩散模型&#xff08;Diffusion Model&#xff09;​ 稳定扩散模型&#xff08;Stable Diffusion&#xff09;属于深度学习模型中的一个大类&#xff0c;即扩散模型。它们属于生成式模型&#xff0c;这意味着它们是被设计用于根据学习内容来生成相似的新的数据的。对于稳定扩…

Vue2与Vue3相应原理区别

Vue3.0中的响应式原理 vue2.x的响应式 1.实现原理&#xff1a; 对象类型&#xff1a;通过Object.defineProperty()对属性的读取、修改进行拦截&#xff08;数据劫持&#xff09;。数组类型&#xff1a;通过重写更新数组的一系列方法来实现拦截。&#xff08;对数组的变更方法…

测试老鸟整理,性能测试高并发压力测试-案例,进阶之道...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 单个接口的压测&a…

通过foxmail同步其他邮箱邮件到我司邮箱

1、先通过foxmail 登录需要备份邮件的邮箱帐号&#xff0c;全选需要备份的邮件&#xff0c;右键选择“导出邮件”。 2、在foxmail中使用IMAP协议登录我司邮箱帐号&#xff0c;右键选择收件箱或其他文件夹导入邮件&#xff0c;将之前导出备份的邮件文件全选导入。 3、导入完成后…

glibc缺陷居然会导致MySQL卡住?

问题来源&#xff1a; 版本&#xff1a;5.7.25。 现象&#xff1a;备机主从延迟不断变大&#xff0c;无法登陆数据库&#xff0c;建立连接时卡住&#xff0c;但很快恢复正常了。 分析&#xff1a; 常规分析&#xff1a; 通常情况下&#xff0c;这类问题无法分析&#xff0c…

vmware17安装openkylin

官网 系统下载-openKylin 开放麒麟社区官网 | 开源聚力&#xff0c;共创未来 下载链接 https://www.openkylin.top/downloads/download-smp.php?id18 安装 点击浏览&#xff0c;选择镜像 修改服务器cpu配置 修改内存配置 修改网络连接方式 点击启动 等待安装完成 出现上图说…