一个结论
rt
定义一个长度为 $ n $ 的序列 $ A \langle a_1,a_2,a_3, \cdots , a_n \rangle $ ,表示有 $ a_i $ 个 $ i $ 。
对于两个这样的序列 $ A , B $ ,如果他们满足
1、 $ | \sum_{i=1}^n a_i i - \sum_{i=1}^n b_i i | \lt n $
2、 $ \sum_{i=1}^n ak_i i \not = \sum_{i=1}^n bk_i i (ak_i \le a_i , bk_i \le b_i , \exists i , a_i \not = ak_i \ or \ b_i \not = bk_i ) $
那么有
\[\forall i , a_i \lt n ,b_i \lt n \]
证明:
此证明来自 int_R 和 9G
我们考虑反证,假设 存在一个 $ i $ ,满足 $ a_i \ge n $ ,我们将 $ B $ 序列展开,举个例子 , $ n = 4 , B= \langle 1,2,3,4 \rangle $ ,那么我们展开成为 $ B ' = (1,2,2,3,3,3,4,4,4,4) $ ,然后对 $ B ' $ 在 $ \pmod { a_i } $ 意义下做一个前缀和,只考虑前 $ a_i $ 个位置,要么出现两个位置相同,要么出现一个位置是 $ 0 $ ,两者都意味着有一个长度 $ \le n $ 的区间的和 $ S \equiv 0 \pmod {a_i} $ ,因为每个数 $ \le n $ ,所以 $ S \le a_i n $ ,同时在 $ A $ 中有 $ \ge n $ 个 $ a_i $ ,所以他们不满足第二条条件,否则一定有 $ B $ 的长度 $ \lt a_i $ ,那么 $ B $ 中所有元素和 $ S ' \le (a_i - 1)n $ , $ A $ 中所有元素和 $ K ' \ge a_i n $ ,所以 $ | S ' - K ' | \ge n $ ,不满足第一条性质,所以可以证明不存在 $ a_i \le n $ 的情况,得证。
想法来源

正解直接用决策单调性优化 $ DP $ 即可,有加强版 雅礼集训 2017 Day5」珠宝 /「NAIPC2016」Jewel Thief 。
但是场上想出了另外一种奇妙的方法,虽然当时不会证明:
首先我们按照平均值去贪心的选,然后就会出现这种情况:按照贪心,下一个应该选一个 $ b_i = 5 $ 的物品,但是如果容量只剩下 $ 1,2,3,4 $ 呢,我们需要微调一下,相当于退几个物品,那几个物品,可以套用上面的结论,所以我们对每种 $ b_i $ ,选出已经选了的 $ 4 $ 个最劣的并退掉,选出没选的 $ 4 $ 个最优的,放在一起跑个背包,一共选了 $ 40 $ 个物品,推掉了权值和为 $ 60 $ 的,所以最大容量只需要 $ 64 $ 即可,然后跑一个 $ 40 \cdot 64 $ 的背包,时间复杂度算出来有点小炸,但是常数很小,即使跑满了最大点也只用 $ 430 $ ms ,可以过题。
其实最远古的想法是 P10961 划分大理石
同样可以优化到常数级别的背包。