那么我们枚举最长边,设它长度为 n。我们发现选一些小于 n 的数使得和大于 n 是不好做的,那么正难则反,我们选一些数使得它们的和小于等于 n。
这时我们就可以计数了。我们设 g_n 是所有选取正整数数使得和不超过 n 的方案中选出来数的个数的和,f_i 是选取正整数数使得和不超过 n 的方案数。
先特判 n=1,在确定最长边 n 的情况下,我们先忽略 n 带来的贡献,那么选取剩下的数造成的总贡献显然是 (n-1)2^{n-2},其中不合法的贡献是 g_n-1(减的 1 是只选一个 n 的方案)。考虑 n 带来的贡献,它在每个合法方案中都会带来一次贡献,显然合法方案数是 2^{n-1}-(f_n-1)(减的 1 同样是只选一个 n 的方案)。
这样最长边为 n 时总贡献就是 (n+1)2^{n-2}-g_n-f_n+2。
怎么 \Theta(n^2) 地求出 f,g 其它题解说的很清楚了,但是显然 f 就是互异分拆数的前缀和,g 就是整数拆分中所有方案大小之和的前缀和。