基础DP学习之【数的划分】

DP专题--数的划分 DP还是太弱 阅读详情
题目描述 Description

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

1 5 1

5 1 1
问有多少种不同的分法。

输入描述 Input Description

输入:n,k (6<n<=200,2<=k<=6)

输出描述 Output Description


输出:一个整数,即不同的分法。

样例输入 Sample Input

 7 3

样例输出 Sample Output

4

从参考书上看来的题目,因为懒得手打了直接从网上粘了一个一样的题目来。

系统的学一下DP吧,。。感觉好难懂= =

数n划分成k份,可以直接形象的转化为n份小球分成k份,每份不能为空

所以就有两种情况:

①.n份里的最小数大于1. 所以先把k个一份分出来,再把n-k个分成k份 dp[n-k][k];

②.n份中最小数等于1. 所以1为单独的一份,再把剩下的n-1个分成k-1份dp[n-1][k-1]

代码已经过测试

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int dp[1234][1234];
int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    int i,j;
    dp[0][0]=1;
    for(i=1;i<=n;i++)
    {
        dp[i][1]=1;
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=i;j++)
        {
            dp[i][j]=dp[i-j][j]+dp[i-1][j-1];
        }
    }
    printf("%d\n",dp[n][k]);
    return 0;
}


【日常学习】【划分DP】codevs1017 乘积最大题解 题目来源 2000NOIP 题目描述 Description 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目:   设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+ 阅读详情

相关推荐

锐浪报表 Grid++Report 子报表 Delphi

锐浪报表 Grid++Report 是国内较好的报表控件,本人一直使用它,做出很多特色的报表。可以说你的报表设计出来,它基本上能做出来。 但是它帮助文件上,说的不深,近期因为要做一个有关社工的报表,大表中,嵌套2个子表。可以说,一个表到三个数据集,分别打印。 在认真看了帮助的基础上,网上探索,基本无此类,特别是Delphi的帮助,几乎为零。经二天摸索,做出来了。 一、设计思路 1、大表和二个小表,可以设计为三个表,分别使用三个GridppReport控件,取名...

lyhoo163的专栏 9074

牛客-数的划分——详解dp划分数问题

文章目录题目题目详解解题代码 题目 题目链接 题目详解 划分数类型题目都是dp解决,而且都有固定的套路和公式,但我们还是需要在前人的公式上加以理解! 划分数问题dp总结 我这里就提两个比较常见的划分数问题的dp原理: 如果对数字划分较为抽象,那么我们把这个数字可以比作苹果,即有n个苹果需要划分到m个盘子里面,而这几个盘子的顺序肯定是不考虑的,也就是5个苹果划分给3个盘子,则1 2 2和2 1 2是完全一样的情况,只看具体的数字组合不看内部排列! 将n划分成不大于m的划分。 dp[n][m]=dp[

CppYyds的博客 2155

慕课软件质量保证与测试(习题集)

慕课金陵科技学院.软件质量保证与测试.期末复习.习题汇总0 总目录1 绪论1.1 软件质量保证与测试的产生与发展1.2 软件缺陷,软件错误,软件故障1.3 软件质量保证与测试的意义,原则和挑战1.4 单元测试1.5 课后作业2 软件测试策略2.1 软件测试的模型,过程和生命周期2.2 软件测试的方法和技术2.3 单元测试2.4 课后作业3 黑盒测试3.1 黑盒测试概述3.2 等价类划分测试3.3 边界值测试3.4 错误推测法3.5 判定表驱动法3.6 因果图法3.7 场景法3.8 正交实验法3.9 单元测试

weixin_42473228的博客 5万+

动态规划之数位统计DP---整数划分问题

方法四中的状态定义。

like455的博客 1420

手把手教你用 Docker 构建自己的 CentOS 基础镜像

目录一、准备CentOS基础镜像二、撰写Dockerfile三、构建Docker镜像四、生成Docker容器 相信码农们经常会听说:虚拟机将成为历史,Docker才是未来 !!! 事实如此,现在大部分公司都在用 Docker 技术,想拥有自己的 Docker 专属镜像,那么 Dockerfile 就是入门,现在让我们一起来看一下 ------ 构建 Docker 镜像的全过程。 好文章 记得收藏...

Nick.Peng's Blogs 1万+

经典密码体制(上)

头歌

shannidawang的博客 3086

搜索基础--数的划分

将整数n分成k份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:n=7,k=3,下面三种分法被认为是相同的。 1,1,5; 1,5,1; 5,1,1; 问有多少种不同的分法。 输入输出样例 输入样例#1: 复制 7 3 输出样例#1: 复制 4 #include<iostream> #include<algori...

weixin_30556161的博客 117

量化平台深度测评:聚宽 / 米筐 / 迅投 QMT 对比分析

本文对比测评国内主流量化交易平台聚宽、米筐和迅投QMT,从回测性能、实盘稳定性和高级功能三方面展开分析。测试显示:聚宽在低频策略回测中效率最高(128秒),米筐次之;迅投QMT凭借C++直连架构实现最低延迟(150ms)和最高订单撤销成功率(98.5%)。平台特色方面,QMT的智能拆单算法可减少25%滑点损失,聚宽的因子库支持版本控制和缓存复用。建议低频策略选聚宽,高频交易选QMT,团队协作优先考虑聚宽。测试数据均来自合规实盘环境,建议根据策略特性进行试用验证。

tianchi2009123的博客 7375

数的划分 (DP解法详解)

Libre OJ #10018「一本通 1.3 例 1」数的划分 详解

chrischen1109的博客 425

SVDD和OCSVM的比较

OCSVM(one class support vector machine)即单类支持向量机,最先提出的文献为:Estimating the support of a high-dimensional distribution.该模型 将数据样本通过核函数映射到高维特征空间,使其具有更良好的聚集性,在特征空间中求解一个最优超平面实现目标数据与坐标原点的最大分离,如图1: 坐标原...

qq_33880788的博客 1万+

YOLOv10精度上不去?QAT量化感知训练全流程,INT8推理mAP只掉0.8%

普通PTQ量化虽简单,但无法应对YOLOv10的小目标特征和激活分布波动,导致精度暴跌。QAT通过“模拟量化误差+联合优化权重与量化参数”,让INT8模型精度接近FP16,同时速度提升1.8倍,完美适配实时检测场景(如安防监控、自动驾驶)。该流程已在工业级项目中验证,针对YOLOv10的优化策略(敏感层保护、小目标加权、分阶段训练)可直接迁移至其他YOLO系列(v8/v9),量化后精度损失均可控制在1%以内。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 916

第二类斯特灵数 and 划分dp 顺带 第一类斯特林数 学习博客

第二类斯特林数知识点参考来自:博客1不过他写的第一类斯特林数写的有点模糊 第一类斯特灵数参考来自:博客2 划分dp知识点参考来自:博客3 这第二类斯特林数和划分dp的数的划分两个知识点很相似啊,我觉得不是相似,而是本来就是一类题型 先看第二类斯特灵数的题型: 再来看看划分dp的一道简单题 那我就不太懂后者出的意义了?用来入门划分dp不错 解法: 解析:这一...

ccsu_deer 657

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

划分型dp专题

双层循环遍历:那就是从小到大枚举i,然后再从小到大枚举j(j<=i),然后我们还要认识到,如果j = 0时,也就意味着,s[:i]就是一个回文串,他的dp应该等于0。然后我们思考把[xn-1, xn]划分出来,如果[xn-1, xn]是回文串串,那这就是符合条件的划分。准备:反向思考:我们假设我们的字符串是[x1, x2,x3,x4,x5,……(if [xn-2, xn-1, xn]是回文的)!(if [xn-2, xn-1, xn]是回文的)] + 1(if [xn-1, xn]是回文的)

dcdbgh的博客 356

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

动态规划学习系列——划分DP(一)

划分型DP,是解决跟划分有关的题目的一种DP思路,个人觉得,是目前接触的DP类型中最难的一种,因为感觉思路并不确定,不过正是不确定,才可以体会到算法的精妙之处。题目链接:wikioi_1017 要求是将一个n位的数分成m部分,使各部分的乘积最大。解题的思路基于一个事实:当前的数可以分成m-1部分,那么加多几位分成m部分不是可以从原来的推出来。从这句差不多是废话的话中我们就可以推出状态转移方程:

fuyukai的专栏 2839

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DP问题总结

转载请注明出处,谢谢。 &nbsp;&nbsp;http://blog.youkuaiyun.com/cc_again?viewmode=list&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ———- &nbsp;Accagain &nbsp;2014年5月15日 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码...

xx_ii 9765

【DP专辑】ACM动态规划总结

动态规划一直是ACM竞赛中的重点

cc_again的专栏 2万+

DP题目总结(每天一小点)

从暑假集训时入门DP的不好体验,到疯狂抵制DP,被分到DP后持续绝望,终于在欣姐的帮助下逐渐接受现实,现在先不断更新下,近期做的DP题目,立个小小的flag。从今以后每天至少两DP题。 后记:flag算是倒了,不间断更新做吧 1.P2001 硬币的面值 题意:就是用所给的硬币凑出所有不超过m的数,因而数组中一定要有1的存在,没有1的话则不可能完成。 #include<bits...

fighting_yifeng的博客 1365

算法基础复盘笔记Day11【动态规划】—— 区间DP、计数类DP、树形DP、记忆化搜索

考虑一颗以u为根节点的子树,这颗子树的快乐指数应该是u的函数,并且分两种情况:选u和不选u。状态表示: f[u][1]表示以u 为根节点的子树并且包括u的总快乐指数,f[u][0] 表示以u为根节点的子树并且不包括u的总快乐指数。 状态计算:记点u的子节点是s - 选 $u$,f[u][1] += $\sum\limits_{}^{}$f[s][0]; - 不选 $u$,f[u][0] += $\sum\limits_{}

Java技术一点通 2207

算法训练 数的划分

算法训练 数的划分 问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。   例如:n=7,k=3,下面三种分法被认为是相同的。   1,1,5; 1,5,1; 5,1,1;   问有多少种不同的分法。 输入格式 n,k 输出格式 一个整数,即不同的分法 样例输入 7 3 样例输出 4 {四种分法为:1,1,5;1,2,4;1,3,3;2,2,3;} 思路: 这道题是个不重复问题的关键点在于怎么处理1,我们需要对划分结果存在1与不存在1的情况进行分别思考。 我们首先建立一个dp[

weixin_46640345的博客 309

闫氏dp分析法学习总结

学习来源:b站闫式dp分析法以及一些acwing的dp问题视频讲解; 导言:遇到dp问题,常常无从下手,往往是干瞪眼;y总用解决两数相乘的例子形象的说明了闫式dp分析法对dp问题解决的帮助:算出324*728,我们可以用小学老师讲的列竖式,一步一步算出来,但是让我们直接口算,可能就干瞪眼了;dp问题也是,有了闫式dp分析法,我们可以对dp问题有个明确的解题方向和模板,帮助解决和理解dp问题; 闫式dp分析法模板: 对我而言,想出状态表示这一步可能比较绕,这一点只能通过多做题,多积累,之前做过类似的

aidaqiudeaichao的博客 4106

AcWing计数类DP学习——整数划分

摘要:本文介绍了正整数划分问题的两种解法。第一种采用完全背包思想,将问题转化为从1~n中选择若干数使和为n的方案数,通过动态规划实现。第二种方法定义状态f[i][j]表示总和为i且恰好用j个数表示的方案数,分为最小值为1和大于1两种情况处理。两种方法均给出代码实现,时间复杂度为O(n²),空间复杂度可优化至O(n)。

qq_73614572的博客 416

划分型DP的斜率优化入门

单调队列斜率优化,最简单的斜率优化入门。

RBS的专栏 601

【动态规划学习】区间dp

区间dp,就是在一段区间上进行动态规划,求解一段区间的最优解。最后合并小区间上的最优解从而得到全局最优解的算法。【问题引入】

2401_82677021的博客 1521

算法提高 数的划分

算法提高 数的划分 问题描述 一个正整数可以划分为多个正整数的和,比如n=3时:   3;1+2;1+1+1;   共有三种划分方法。   给出一个正整数,问有多少种划分方法。 输入格式 一个正整数n 输出格式 一个正整数,表示划分方案数 样例输入 3 样例输出 3 思路: 本题的意思就是用数的和组成一个n问有多少种可以,我们可以先假设1可以划分为1种方法2可以划分为2种方法,那么3就可以得到 当 程序: z=int(input()) dp=[0 for i in range(z+1)] dp[0]=1

weixin_46640345的博客 228
上一篇: Max Sum Plus Plus HDU - 1024
下一篇: 基础DP学习之【货币问题】
哈哈哈哈666
博客等级 码龄10年 0粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值