# 编辑城镇与模拟币3:人均财富差与闭式公式 Codex(GPT-6)给出固定两户的最优性证明、闭式公式和实现。下面的推导只使用题目的搬家规则。 ## 1. 结论 记 $k=p_1$ ,$l=p_2$ .若 $l=0$ ,答案为 $m_1$ .以下设 $l>0$ ,并记 $$ a=\frac{m_1}{k},\quad b=\frac{m_2}{l},\quad N=k+l,\quad r=\min(k,l),\quad t=\max(k,l). $$ 若 $a\ge b$ ,不编辑最优。否则令 $$ D=\left\lfloor\frac{(N+1)^2}{4}\right\rfloor,\qquad \rho=1-\frac ND. $$ 答案为 $$ W=\frac{k(m_1+m_2)}N+\frac{r^2}N(b-a)\rho^r. $$ 例如 $k=l=2,m_1=2,m_2=18$ 时,$\rho=1/3$ ,答案为 $10+8/9=98/9$ . ## 2. 两户的高低关系不会反转 固定位置A、B当前有 $s,N-s$ 人,人均财富分别为 $u,v$ .一人从A搬到B后,只要A仍非空,它的人均财富还是 $u$ ,而B变为 $$ v'=\frac{(N-s)v+u}{N-s+1}. $$ 因此差 $v-u$ 乘上 $(N-s)/(N-s+1)$ .一人从B搬到A则使差乘上 $s/(s+1)$ .这些因子在两户都保持非空时严格位于0和1之间。 若一户变空,全体居民已经合为一家,所有居民人均财富相等;此后任何搬家都保持这个均值。 所以两个位置的人均财富高低关系始终不变,差距只能缩小。这是固定两户可以简化的关键。 ## 3. 选择最终位置 若 $a\ge b$ ,A初始不比B穷。目标最终在A且人数恢复为 $k$ 时,人均差不可能比初始更大;若最终在B,则目标处于较穷的一侧。两种情况都不能超过初始财富 $m_1$ . 以下设 $aP$ ,它也不被 $P$ 整除。约分后的最优财富分母同样与 $P$ 互素。 用费马小定理求逆元、二进制快速幂求 $\rho^r$ .所有模乘法使用64位整数,并在连乘之间取模。初始交叉乘积最多为 $10^{15}$ ,也在64位范围内。 设每份存档最大初始人数为 $M$ .单份时间复杂度为 $O(\log P+\log M)$ ,额外空间为 $O(1)$ ;共 $T$ 份存档,时间为 $O(T(\log P+\log M))$ . ## 7. 两种计算方式 [标准程序](std.cpp)直接计算闭式公式。另有[最优搬家路线的仿射变换解法](solution-alternative-affine.zh.md)及其[程序](alternative-affine.cpp):先构造已证明最优的人数路线,再批量计算每一段的家庭财富。两者共享最优路线证明,计算过程不同,均为常数空间、对数时间,均通过完整数据。 仿射方案可以直接对应实际搬家过程;闭式公式便于独立计算最终答案,选作标准程序。小规模另使用精确分数的全状态最短路核验,其用途见[测试说明](tests/README.md)。