【构造训练 2】【糊题】 IPSC2012 Partitioning containers

本题出了比较曲折的问题
此题我找不到提交地址

题面

image

题解

以下做法不保证正确,即使有严谨证明(见后寄
删除最大值这种做法是不支持\(O(1)\)空间的,我们考虑直接加,能放第一个就放,不能就第二个,再不能就扔。

证明1:

结论1:假如我要把一个大小为\(S\)的空间分成两部分,使其都不能放下一个大小为\(x\)的块,那么分成两个\(\frac s2\)显然最优。

考虑现在出现了一个放不进去的块, 设其大小为\(x\),设还没有放进去的所有块大小和为\(s\),那么有\(s \leq x\), 因为如果\(s > x \to s+x>2x\) ,那么两个容器剩余空间和显然大于\(2x\),由于结论1,\(x\)显然可以放入,不成立。

\(x=ys(y\geq1)\),那么

\[\frac{x+s}{2} = \frac{s+ys}{2} > s \]

所以扔掉\(x\)后,\(s\)显然可以放入,证毕。

证明2:

受lyf大佬的启发,这里有一个更妙的证明。
假如我们有一个块放不下了,我们把它放第一个会多出来一点,那么假如我们把多出来的一点切下来放到第二个,那么肯定放得下,由于第一个已经满了,所以还没放的所有块肯定恰好能放进第二个,所以我们把当前这个块扔了,后面的块一定放得下。


后寄

题解说我这种做法是错的,有图为证。

image

在与机房dalao讨论半天之后,终于不知道哪里错了。

就当是对的了!

这证明真的不能在错了吧?

posted @ 2022-03-01 08:45  ltdJcoder  阅读(22)  评论(0编辑  收藏  举报