Description

题库链接

把 \(n\) 个同样的苹果放在 \(m\) 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发。多测,数据组数 \(t\)。

\(1\leq m,n\leq 10, 1\leq t\leq 20\)

Solution

康复训练 \(\times 3\)。

下午给学弟讲课时发现了这样一道题...数据完全可以出到 \(O(n^2)\) 。当然原题的意思是要用搜索做...

我们记 \(f_{i,j}\) 为 \(i\) 个苹果放在 \(j\) 个盘子中的方案数。显然边界条件为 \(\forall i,f_{0,i}=1\),理由是没有苹果时局面只有一种,即任何盘子都为空。

要注意到这样一个性质,由于盘子均相同,所以 \(f_{i,j}=f_{i,i},j>i\)。

对于 \(\text{DP}\) 方程,考虑第 \(j\) 个盘子怎么放。

  1. 若第 \(j\) 个盘子不放苹果,那么只需考虑 \(i\) 个苹果放在 \(j-1\) 个盘子中的方案数,即 \(f_{i,j-1}\);
  2. 若第 \(j\) 个盘子放苹果,由常规套路 \(\text{DP}\) 时由无序变有序,盘子放苹果数单调递减。那么如果最后一个盘子都有苹果,则所有盘子都有苹果。我们将每个盘子中的苹果数均 \(-1\),就变成了一般情况。此时方案数为 \(f_{i-j,j}\)。

综上方程为 \(f_{i,j}=f_{i,j-1}+f_{i-j,j}\)。

Code

#include <bits/stdc++.h>
using namespace std;
const int N = 50; int f[N][N], n, m, t; int main() {
for (int i = 0; i < 50; i++) f[0][i] = 1;
for (int i = 1; i < 50; i++)
for (int j = 1; j < 50; j++) {
if (j > i) f[i][j] = f[i][i];
else f[i][j] = f[i][j-1]+f[i-j][j];
}
scanf("%d", &t);
while (t--) {
scanf("%d%d", &m, &n);
printf("%d\n", f[m][n]);
}
return 0;
}

[Luogu 2386]放苹果的更多相关文章

  1. 【递归】P2386放苹果

    题目相关 题目描述 把 m个同样的苹果放在 n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法.(5,1,1 和 1,1,5 是同一种方法) 输入格式 第一行是测试数据的数目 t,以下每行 ...

  2. OpenJudge 666:放苹果 // 瞎基本DP

    666:放苹果 总时间限制:  1000ms     内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1 ...

  3. oj放苹果

    题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入 每个用例包含二个整数M和N.0<=m< ...

  4. POJ 1664 放苹果

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24985   Accepted: 15908 Description ...

  5. POJ --- 1164 放苹果

    放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24947   Accepted: 15887 Description ...

  6. POJ——放苹果

    4:放苹果 查看 提交 统计 提问 总时间限制:  1000ms  内存限制:  65536kB 描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示) ...

  7. poj1664放苹果(递归)

    题目链接:http://poj.org/problem?id=1664 放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: ...

  8. 放苹果(poj1664递归)

    ti放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24392   Accepted: 15513 Descripti ...

  9. poj 1664 放苹果(递推)

    题目链接:http://poj.org/problem? id=1664 放苹果 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

随机推荐

  1. Python之路【第二十一篇】:JS基础

    JavaScript的基础学习(一) 一.JavaScript概述 1.1 JavaScript的历史 ● 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在 ...

  2. (转)为什么ssh一关闭,程序就不再运行了?

    ref :https://www.cnblogs.com/lomper/p/7053694.html 问题描述 当SSH远程连接到服务器上,然后运行一个程序,eg: ./test.sh, 然后把终端开 ...

  3. 论文笔记: Matrix Factorization Techniques For Recommender Systems

    Recommender system strategies 通过例子简单介绍了一下 collaborative filtering 以及latent model,这两个方法在之前的博客里面介绍过,不累 ...

  4. ArcGIS Engine中C#开发不能引用ESRI.ArcGIS.AxControls问题

    问题:ArcGIS Engine中C#开发不能引用ESRI.ArcGIS.AxControls问题 解决方法:将这里的特定版本改成“False”即可.

  5. 使用Powershell启用/关闭Windows功能

    接上一篇博客,依旧是需要制作安装包,需要开启系统的MSMQ功能.这里就用到了dism.exe DISM全称是Deployment Image Servicing and Management(部署映像 ...

  6. VMware 网络介绍

       3.1 网卡介绍 如图所示,你的机器有两块网卡,一个是有线,一个是无线. 装完VM之后,会出现两块虚拟网卡,如图 VM有四种连接方式,我们着重介绍前三种    3.2 桥接 选择桥接模式,说明V ...

  7. swagger list Could not resolve reference because of: Could not resolve point

    swagger list Could not resolve reference because of: Could not resolve point controller的参数要加   @Requ ...

  8. python入学代码

    liwenhu=100 if liwenhu>=90: print("你很棒") elif liwenhu>=80: print("你很不错") e ...

  9. SpringBoot之多Profile配置

    近来在利用闲暇时间巩固下SpringBoot的基本知识,然后自己也做一些笔记,整理下当时所学知识,后面就干脆写到这里来了. 多Profile配置文件 在SpringBoot主配置文件编写的时候,文件名 ...

  10. TypeScript基础以及在Vue中的应用

    TypeScript推出已经很长时间了,在Angular项目中开发比较普遍,随着Vue 3.0的即将推出,TypeScript在Vue项目中使用也即将成为很大的趋势,笔者也是最近才开始研究如何在Vue ...