计数类Dp

文章目录

  • AcWing 900. 整数划分
    • 思路
      • 1. 完全背包
        • AC CODE
      • 2. 计数Dp
        • AC CODE


AcWing 900. 整数划分

链接:https://www.acwing.com/activity/content/problem/content/1008/
在这里插入图片描述


思路

1. 完全背包

完全背包的链接:https://blog.csdn.net/2301_78981471/article/details/135065651

我们可以用完全背包的思想来做:在前 i 件物品中,选出若干件,使其和正好为 j
然后根据完全背包的优化思路将其压缩至一维即可。

AC CODE
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 1010;
const int mod = 1e9 + 7;
int n;
int f[N];int main()
{cin >> n;f[0] = 1;for(int i = 1; i <= n; ++i){for(int j = i; j <= n; ++j){f[j] = (f[j] + f[j - i]) % mod;}}cout << f[n] << endl;
}

2. 计数Dp

在这里插入图片描述

  • 将状态划分为两种:方案中的最小值是1与不是1
    • 是1:把这个1减去,也就是总和为 i - 1 且表示为 j - 1个数的方案,两者等值(f[i - 1, j - 1]
    • 非1:值与将方案中所有数字全部-1得到的方案的方案数相同,也就是从前 j 个数中选出总和为 i - j 的方案的方案数(f[i - 1, j - i]
  • 最后要把所有方案求和。
AC CODE
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 1010;
int n;
int f[N][N];
int mod = 1e9 + 7;int main()
{cin >> n;f[0][0] = 1;for(int i = 1; i <= n; ++i){for(int j = 1; j <= i; ++j){f[i][j] = (f[i - 1][j - 1] + f[i - j][j]) % mod;}}int sum = 0;for(int i = 1; i <= n; ++i) sum = (sum + f[n][i]) % mod;cout << sum << endl;
}

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

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

相关文章

【原创】EPLAN中端子图表的制作

在上一期的文章中,我们主要谈了EPLAN制图中常用符号,有伙伴提出,让我们写一篇,关于端子图表的技术资料。我们这篇文章就是作为对伙伴评论的回复。 在EPLAN制图的过程中,我们一起探讨技术问题,共同解决我们现实工作中遇到的问题,欢迎大家在评论区留言,我们会根据大家的…

IPFoxy的正确打开方式

IPFoxy是一个全球动静态代理IP服务器软件&#xff0c;为全球用户提供优质的大数据代理服务&#xff0c;促进网络业务高校进行。目前拥有千万真实纯净IP资源&#xff0c;覆盖超过220个国家和地区&#xff0c;汇聚成优质海外代理池&#xff0c;支持http、https、socks5多种协议类…

人机交互三原则,网络7层和对应的设备、公钥私钥

人机交互三原则 heo Mandel提出了人机交互的三个黄金原则&#xff0c;它们强调了相似的设计目标&#xff0c;分别是&#xff1a; 简单总结为&#xff1a;控负持面–>空腹吃面 1&#xff0c;用户控制 2&#xff0c;减轻负担 3&#xff0c;保持界面一致 置用户于控制之下&a…

2024/3/14 定时器时钟

感觉和之前自己写的那个差不太多&#xff0c;只是用了定时器。贴一下代码. main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "Timer0.h" unsigned char Sec59,Min49,Hour17;void main() {LCD_Init();Time…

基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台

tar -xzf prometheus-2.7.0-rc.1.linux-amd64.tar.gzcd prometheus-2.7.0-rc.1.linux-amd64/./prometheus --config.fileprometheus.yml --web.listen-address:5555 Prometheus 默认监听端口号为 9090&#xff0c;为了不与系统上的其它进程监听端口冲突&#xff0c;我们在启动…

6个可以免费使用的高质量作品集

如今&#xff0c;一个独特、美观、优秀的在线作品集在 UX 设计师或自由职业者能否找到一份满意的工作或吸引更多潜在用户方面发挥着重要作用&#xff0c;就像简历一样。然而&#xff0c;作为一个没有太多经验的设计师或新手&#xff0c;设计和创建一个详细、完美和引人注目的在…

第G5周:Pix2Pix理论与实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 一、背景知识 1.背景知识 1.1 图像翻译 图像翻译指的是将图像从源域转换到目标域的过程&#xff0c;同时保持图像内容的一致性。具体解释…

C语言之文件操作(万字详解)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a; 我要学编程(ಥ_ಥ)-CSDN博客 目录 前言 文件的打开和关闭 流和标准流 文件指针 文件的打开和关闭 文件的顺序读写 顺序读写函数介绍 fputc的使用 fgetc的使用 fput…

压缩json字符串

GZIPOutputStream 需要关闭&#xff0c;而 ByteArrayOutputStream 不需要关闭。具体原因如下&#xff1a; GZIPOutputStream&#xff1a;GZIPOutputStream是一种过滤流&#xff0c;它提供了将数据压缩为GZIP格式的功能。当使用此类的实例写入数据时&#xff0c;它会对数据进行压…

Linux的一些常用指令

一、文件中 r w x - 的含义 r&#xff08;read&#xff09;是只读权限&#xff0c; w&#xff08;write&#xff09;是写的权限&#xff0c; x&#xff08;execute&#xff09;是可执行权限&#xff0c; -是没有任何权限。 二、一些指令 # 解压压缩包 tar [-zxvf] 压缩包名…

从政府工作报告探计算机行业发展(在医疗健康领域)

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

C++训练营:引用传递

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 一、引用传递 简单来说&#xff0c;“引用”就是给已有的变量起一个别名。引用并没有自己单独的内存空间&#xff0c;作为引用&#xff0c;它和原变量共用一段内存空间。引用的定义格…