【题解】CF1798F 结论 数学 简单dp
结论题,算是被 *2500 打爆了。
对于 $2n-1$ 个数,我们一定能选出 $n$ 个,使得其和是 $n$ 的倍数。
这个定理告诉我们,只要一个班的人数不大于目前没有分配的包数的一半,那么一定存在一种方式使得这个班能够分配到 $s$ 袋和为 $s$ 倍数的糖果。
考虑只让这样的班(人数大于目前没分配的其它班)有一个,最后用自由的那袋去调整,方法是只需要把最大的班放在最后就行了,这样其他班都满足剩余袋数 $\geq 2n-1$ 的。
这样只需要依次满足每个班的需求就行了,这是一个简单 dp,$f_{i,j,k}$ 能否表示前 $i$ 袋,拿了 $j$ 袋,余数为 $k$,复杂度 $O({n^3})$,注意到 dp 值是 boolean 的,所以可以压缩到 $O(\frac {n^3} w)$。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970933,谢谢你的阅读或转载!

浙公网安备 33010602011771号