求自然数N的划分{n_i}对应的指定求和式的最大值
问题分析
让我们一步步拆解这个问题,先搞清楚核心的计算逻辑:
- 对于划分里的每个项$n_i$,求和式中的$\lfloor \frac{n_i}{2} \rfloor +1$其实可以简化理解:$n_i=1$时值为1,$n_i=2/3$时值为2,$n_i=4/5$时值为3,以此类推——每两个连续的自然数对应同一个贡献值。
- 求和的上限是$\lfloor \frac{k}{2} \rfloor +1$,说白了就是取划分的「前半多一个」项:比如划分有4个项就取前3个,有5个项取前3个,有3个项取前2个。
我们的目标就是找到N的一个划分,让这部分前半项的贡献总和最大。
从小例子找规律
先拿几个小的N值试手,直观感受最优划分的特点:
- N=1:唯一划分是[1],求和结果为1,这就是最大值。
- N=3:划分[2,1]的求和是2+1=3,比单一项[3]的求和2更大——把大项拆成小项,虽然单个项的贡献没提升,但求和的项数变多了,总和反而上涨。
- N=6:划分[2,2,1,1]的求和是2+2+1=5,比全是2的划分[2,2,2]的求和4更大——这里把一个2拆成两个1,虽然单个项的贡献从2降到1,但划分的项数从3变4,求和上限从2变3,多了一个1的贡献,总和反而增加了1。
- N=7:划分[2,2,2,1]的求和是2+2+2=6,是最大的——这时候多拆出2能让前m项都是高贡献的2,比拆成1更划算。
最优划分策略
经过反复验证,最优的划分思路可以总结为:
- 优先尽可能多地用2来构造划分,剩下的部分用1填充;
- 当N是3的倍数时(比如N=3,6,9...),要把其中一个2拆成两个1——这样划分的项数会增加,求和上限也会跟着提升,多出来的1的贡献能让总和再涨1。
通用最大值公式
推导后,任意自然数N对应的求和最大值可以用这个简洁公式表示:
$$
\left\lceil \frac{2(N+1)}{3} \right\rceil
$$
或者分情况写得更直白:
- 当$N \equiv 0 \pmod{3}$时,最大值为$\frac{2N}{3} +1$;
- 当$N \equiv 1 \pmod{3}$或$N \equiv 2 \pmod{3}$时,最大值为$\frac{2N + 2}{3}$(结果取整数)。
举几个验证例子:
- N=3:$\lceil 2*(3+1)/3 \rceil = \lceil 8/3 \rceil=3$,正确;
- N=6:$\lceil 2*(6+1)/3 \rceil=\lceil14/3\rceil=5$,正确;
- N=7:$\lceil2*(7+1)/3\rceil=\lceil16/3\rceil=6$,正确;
- N=5:$\lceil2*(5+1)/3\rceil=\lceil12/3\rceil=4$,正确。
总结
要构造出能得到最大值的划分,直接按以下方式来:
- 如果N=3t:做t个2 + t个1的划分(比如N=6→[2,2,1,1]);
- 如果N=3t+1:做t+1个2 + t-1个1的划分(比如N=7→[2,2,2,1],N=4→[2,2]);
- 如果N=3t+2:做t+1个2 + t个1的划分(比如N=5→[2,2,1],N=8→[2,2,2,1,1])。
内容的提问来源于stack exchange,提问作者Dilemian




