Peter算法小课堂—正整数拆分

大家可能会想:正整数拆分谁不会啊,2年级就会了,为啥要学啊

例题

正整数拆分有好几种,这里我们列举两种讲。

关系

我们看着第一幅图,头向左转90°,记住你看到的图,再来看第二幅图,你会惊奇的发现:第一幅图向左转90°就变成了第二幅图!因此,我们做出来一道题,就能推出另外一题。这种情况我们称之为Ferrers图

例2

我们先思考状态定义:f[i][j]表示把i恰好分成j个正整数的方案数

后面考虑状态转移方程,第一步先列表格。

 我相信聪明的你们已经发现了规律:f[9][4]=1+2+2+1(i=5那行)f[8][3]=1+2+1(i=5那行的前4个)

后面,我们用数学方法推导一下规律:

 因此得到状态转移方程:f[i][j]=f[i-j][1]+f[i-j][2]+……+f[i-j][j],但是时间复杂度为O(n^3)。于是我们进行优化。

我们看到f[i-j][1]+f[i-j][2]+……+f[i-j][j-1]=f[i-1][j-1],为什么因为根据前面的状态转移方程,f[i-1][j-1]等于f[i-j][1]+f[i-j][2]+……+f[i-j][j-1]。最后,我们的状态转移方程变为f[i][j]=f[i-1][j-1]+f[i-j][j]!

最后给个代码,

cin>>n>>m;
for(int i=1;i<=n;i++) f[i][1]=1;
for(int j=2;j<=m;j++)for(int i=j;i<=n;i++)f[i][j]=f[i-1][j-1]+f[i-j][j];
cout<<f[n][n]<<endl;

变种

太戈编程习题

456. 数的划分

题目描述

将整数n分成k份,且每份不能为空。任意两个方案不能相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5;1,5,1;5,1,1; 问有多少种不同的分法。

#include <bits/stdc++.h>
using namespace std;
#define N 210
#define K 16
int n,k,f[N][K];
int main(){freopen("partition.in","r",stdin);freopen("partition.out","w",stdout);cin>>n>>k;for(int i=1;i<=n;i++) f[i][1]=1;for(int j=2;j<=k;j++)for(int i=j;i<=n;i++)f[i][j]=f[i-1][j-1]+f[i-j][j];cout<<f[n][k]<<endl;return 0;
}

457. 训练计划

题目描述

要想成为编程高手,必须独立编程n个小时。作为编程教练,你希望为孩子们设计一套训练计划,将n个小时拆分成若干天完成。已知每天最多安排不能超过k小时,你的训练计划要求每天的训练量不能出现下降。请问一共有多少种训练方案?

 

#include <bits/stdc++.h>
using namespace std;
#define N 350
#define K 34
long long n,k,f[N][K];
int main(){freopen("training.in","r",stdin);freopen("training.out","w",stdout);cin>>n>>k;for(long long i=1;i<=n;i++) f[i][1]=1;for(long long j=2;j<=k;j++)for(long long i=j;i<=n;i++)f[i][j]=f[i-1][j-1]+f[i-j][j];long long ans=0;for(long long i=1;i<=k;i++)ans+=f[n][i];cout<<ans<<endl;return 0;
}

 希望大家可以点个赞、关个住,谢谢o(*^@^*)o

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

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

相关文章

KubeSphere安装mysql8

需要持久化储存数据的,建立有状态服务。 无状态服务是不会持久化的,重启就归零 KubeSphere 创建自建应用后,创建有状态服务,但是自己应用的有状态服务不能外放端口,需要在服务哪里删除pod,在创建负载指定相关的有状态服务,就可以外放端口了 安装mysql8 添加初始化密码参…

Linux软件包名称含AMD,ARM,x64的详解

下载clickhouse-backup时看到不同软件包&#xff0c;有的是x86&#xff0c;有的是amd64&#xff0c;有的是arm64&#xff0c;这些有啥区别呢&#xff1f; clickhouse-backup-2.4.2-1.x86_64.rpm clickhouse-backup_2.4.2_amd64.deb clickhouse-backup_2.4.2_arm64.deb x86 和 …

Nmap端口服务 之 CentOS7 关于启动Apache(httpd)服务、telnet服务、smtp服务、ftp服务、sftp服务

Nmap端口服务 之 CentOS7 关于启动Apache(httpd)服务、telnet服务、smtp服务、ftp服务、sftp服务 一. CentOS7 安装配置SFTP服务器详解一、SFTP简介二、关闭防火墙三、安装SSH服务在CentOS7中,sftp只是ssh的一部分,所以采用yum来安装ssh服务即可1. 查看是否已经安装了ssh2.…

狄克斯特拉(Dijkstra) 算法 php实现

《算法图解》中提到的狄克斯特拉算法&#xff0c;用php实现。 一 原理及解释 根据示例图求出起点到终点的最小耗费路径。 因为涉及每条路径的权重&#xff0c;所以这种算法仅适合有向路径。 所谓有向路径&#xff0c;指仅从起点指向终点的路径。 相对的无向路径&#xff0…

【面试题笔记】C++继承和多态常见高频经典面试题

1.继承相关习题 1.1 什么是菱形继承&#xff1f;菱形继承的问题是什么&#xff1f; 菱形继承&#xff1a;菱形继承是多继承的一种特殊情况。两个中间类继承父类&#xff0c;而派生类继承了两个中间类&#xff0c;从而在继承关系上呈现出一种菱形。如下图所示&#xff1a; **…

ZKP3.2 Programming ZKPs (Arkworks Zokrates)

ZKP学习笔记 ZK-Learning MOOC课程笔记 Lecture 3: Programming ZKPs (Guest Lecturers: Pratyush Mishra and Alex Ozdemir) 3.3 Using a library ( tutorial) R1CS Libraries A library in a host language (Eg: Rust, OCaml, C, Go, …)Key type: constraint system Mai…

光伏三相并网逆变器的控制策略与性能分析(Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

24、Flink 的table api与sql之Catalogs(java api操作分区与函数、表)-4

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…

MySQL基本操作之创建数据表

设计表: 学生表(Student): 学号(StudentID)- 主键,用于唯一标识每个学生姓名(Name)性别(Gender)年龄(Age)出生日期(BirthDate)地址(Address)电话(Phone)邮箱(Email)课程表(Course): 课程号(CourseID)- 主键,用于唯一标识每门课程课程名(CourseNam…

利用Spring Boot框架做事件发布和监听

一、编写事件 1.编写事件类并集成spring boot 事件接口&#xff0c;提供访问事件参数属性 public class PeriodicityRuleChangeEvent extends ApplicationEvent {private final JwpDeployWorkOrderRuleDTO jwpDeployWorkOrderRuleDTO;public PeriodicityRuleChangeEvent(Obje…

基于Java的师生交流答疑管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

攻防世界web篇-Training-WWW-Robots

直接点击给出的地址&#xff0c;然后会转到另一个网页界面&#xff0c;在这个界面&#xff0c;已经给出了提示&#xff0c;robots.txt 在浏览器中&#xff0c;直接在地址的后面加上robots.txt&#xff0c;会进到下面这个界面 因为对php语言一窍不通&#xff0c;所以这里纯粹就…

【数据结构】队列(C语言实现)

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 队列 1. 队列的概念及结构…

搜维尔科技:Varjo-探讨汽车工业使用虚拟现实/XR的可能性

新的 奇亚EV9 被定位为起亚有史以来最豪华的车型。在一次活动中,起亚通过向芬兰媒体、利益相关者和经销商网络推出新的汽车车型(起亚EV9&#xff0c;EV9是一款高度超过5米的全电动车,拥有100千瓦的电池、快速充电能力、2500公斤的拖曳能力和7公斤的座位--这在市场上是一个独特的…

统计不同子序列出现的个数

统计不同子序列出现的个数 在本文中&#xff0c;我们将讨论如何解决一个有趣的问题&#xff1a;给定两个字符串s和t&#xff0c;我们需要统计t在s的子序列中出现的个数。最终的结果需要对 1 0 9 7 10^9 7 1097 取模。 问题描述 我们被要求统计字符串t在字符串s的子序列中…

网站打不开的九个因素

网站打不开的九个因素 1. 服务器软件软件多少、稳定和软件的正确配置&#xff0c;都会影响到服务器环境&#xff0c;以致影响到网络速度。服务器安装软件防火墙&#xff0c;会牺牲一些网络速度&#xff0c;所以VPS、或独立服务器用户装一个防火墙足矣。 2. 机器的配置包括空服…

常见问题-找不到vcruntime140.dll无法继续执行代码解决方案

本文将介绍五种不同的解决方案&#xff0c;帮助大家解决这个问题。 首先&#xff0c;我们需要了解为什么会出现找不到vcruntime140.dll的情况。这种情况通常是由于以下几个原因导致的&#xff1a; 1. 系统环境变量设置不正确&#xff1a;系统环境变量中可能没有包含vcruntime…

jvm的jshell,学生的工具

jshell 在我眼里&#xff0c;只能作为学校教学的一个玩具&#xff0c;事实上官方也做了解释&#xff0c;以下是官方的解释&#xff1a; 在学习编程语言时&#xff0c;即时反馈很重要&#xff0c;并且 它的 API。学校引用远离Java的首要原因 教学语言是其他语言有一个“REPL”…

轻量级导出 Excel 标准格式

一般业务系统中都有导出到 Excel 功能&#xff0c;其实质就是把数据库里面一条条记录转换到 Excel 文件上。Java 常用的第三方类库有 Apache POI 和阿里巴巴开源的 EasyExcel 等。另外也有通过 Web 模板技术渲染 Excel 文件导出&#xff0c;这实质是 MVC 模式的延伸&#xff0c…

nfs+rpcbind实现服务器之间的文件共享

NFS简介 NFS服务及Network File System&#xff0c;用于在网络上共享存储&#xff0c;分为2,3,4三个版本&#xff0c;最新为4.1版本。NFS基于RPC协议&#xff0c;RPC为Remote Procedure Call的简写。 应用场景&#xff1a;用于A,B,C三台机器上需要保证被访问到的文件是一样…