球盒问题

n相同球放入m个相同盒子,允许空盒的情况。这个问题和分拆函数(partition function)有关,似乎没有解析解。可以通过递归求解,代码为:

#include <iostream>

using namespace std;

int f(int n, int m)
{
if(m == 1 || n == 0) return 1;
if(m > n) return f(n, n);
return f(n, m-1) + f(n-m, m);
}

int main(){
int n,m;
while(true){
cin >> n >> m;
cout << f(n,m)<<endl;
}
return 0;
}

n个球放入n个盒子,n趋于无穷时,最多球的桶中球的个数为:

时间: 2024-10-14 09:55:10

球盒问题的相关文章

YYH的球盒游戏(NOIP模拟赛Round 6)

原题传送门 这题的算法优化真是博大精深. 具体我们一个一个来讲. 我们先看这道题的算法,(这..裸的费用流啊...) 然后我们发现负边(好吧,其实没有什么用.spfa可以跑) 首先所有的球都要向源点连费用0,流量为球的数量的边 然后我们考虑每一个球都要到汇点,所以从盒子向汇点连费用0,流量inf的边. 对于每一个球向每一个盒子连费用为-c(c为收益),流量为1的边. 重点来了:怎么处理多放? 我们已知一个公式 n^2-(n-1)^2=n*2-1; 所以我们从每一个盒子向汇点连流量为1,费用为2*

YYH的球盒游戏

#include<iostream> #include<cstdio> #include<cstring> using namespace std; int h[5210],d[5210],used[5210],que[100010],last[5210]; int k=1,INF=0x7fffffff,ans=0,a[101],b[101][101],c[101]; inline int read(){ int t=1,num=0; char c=getchar();

还有哪些东西要写?_?

?_?感觉数论写不完 先记下来哪些要写 容斥原理 抽屉原理 置换群与Polya定理 母函数 二项式反演 莫比乌斯反演 积性函数 狄利克雷卷积 偏序关系理论 高斯消元 概率与期望问题 博弈论之极大极小过程 博弈论之Nim 鸽巢原理(或叫抽屉原理,或者球盒原理) 康托展开 矩阵相关的一系列 ?_?

前端基础进阶(一):内存空间详细图解

变量对象与堆内存 var a = 20; var b = 'abc'; var c = true; var d = { m: 20 } 因为JavaScript具有自动垃圾回收机制,所以对于前端开发来说,内存空间并不是一个经常被提及的概念,很容易被大家忽视.特别是很多不是计算机专业的朋友在进入到前端之后,会对内存空间的认知比较模糊,甚至有些人干脆就是一无所知. 当然也包括我自己.在很长一段时间里认为内存空间的概念在JS的学习中并不是那么重要.可是后我当我回过头来重新整理JS基础时,发现由于对它们

【递归与递推】集合的划分

[递归与递推]集合的划分 题目描述 设s是一个具有n个元素的集合,s={a1,a2,……,an},现将s划分成k个满足下列条件的子集合s1,s2,……,sk,且满足:(1)si≠∅(2)si∩sj=∅(3)s1∪s2∪s3∪...∪sk=s则称s1,s2,...,sk是集合s的一个划分.它相当于把s集合中的n个元素a1,a2,...,an放入k个(0<k≤n<30)无标号的盒子中,使得没有一个盒子为空.请你确定n个元素a1,a2,...,an放入k个无标号盒子中去的划分数s(n,k). 输入

The Wall (medium)

Heidi the Cow is aghast: cracks in the northern Wall? Zombies gathering outside, forming groups, preparing their assault? This must not happen! Quickly, she fetches her HC2 (Handbook of Crazy Constructions) and looks for the right chapter: How to bui

最全电商分类信息(04)

ID 上级ID 分类名称 分类等级 是否最终分类 3001 10473 其它汽车保养/添加剂 3 1 3002 10470 车用水桶 2 1 3003 10471 车用清洗/除蜡/除胶剂 3 1 3004 10471 车用洗车机/设备 3 1 3005 10471 车刷/车掸/蜡拖 3 1 3006 10471 洗车水枪/洗车水管接头 3 1 3007 10470 洗车海绵/洗车泥 2 1 3008 10470 其它车用清洗工具/用品 2 1 3009 10589 保养工具 2 1 3010 1

过滤器系列(二)——布谷过滤器

这一篇讲的是布谷过滤器(cuckoo fliter),这个名字来源于更早发表的布谷散列(cuckoo hash),尽管我也不知道为什么当初要给这种散列表起个鸟名=_= 由于布谷过滤器本身的思想就源自于布谷散列,那么我们就从布谷散列开始说它的设计思想.产生布谷散列表的一个重要背景是人们对于球盒问题的分析:给定N个球,随机的放在N个盒子里,在装球最多的盒子里,球的个数的期望是多少?答案是\(\Theta (logN/loglogN)\),这个问题其实就是散列表装填因子为1时的情况分析.后来有一天,人

JS的事件环

栈(Stack) 栈是一种遵循后进先出(LIFO)的数据集合,新添加或待删除的元素都保存在栈的末尾,称作栈顶,另一端称作栈底.在栈里,新元素都靠近栈顶,旧元素都接近栈底 感觉说起来并不是很好理解,我们举个例子,比如有一个乒乓球盒,我们不停的向球盒中放进乒乓球,那么最先放进去的乒乓球一定是在最下面,最后放进去的一定是在最上面,那么如果我们想要把这些球取出来是不是就必须依次从上到下才能拿出来,这个模型就是后进先出,就是我们后进入球盒的球反而最先出来.栈的概念其实在我们js中十分的重要,大家都知道我们