一个结论

一个结论

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 划分大理石

同样可以优化到常数级别的背包。