Q1
做法是如果没有正数,就输出最大的数,否则将数列中最大的正数提出来,再用除其以外的数字做背包,让和小于0且最大。
但是,如何保证存在一种排列使得选出来的数都能被加入答案中?
Q2
讲题中出题人提到,将排列shuffle后值域不会很大,可以缩小值域进行DP,但是我感受不出来这个排列shuffle后值域到底会是多大。有没有比较严谨的证明可以说明这个东西不会很大?
Q3
这题数据是不是太水了一点,可以发现只输出最大值或者最大的正数加最大负数(也就是sub2和sub3做法),可以通过大部分数据,所以可以怀疑剩下的数据用一些乱搞可以随便过。
事实证明也是如此,我问了一圈学弟们的做法,有的人四个贪心拼起来过了,有的人贪心玩之后在较优解附近跑模拟退火也能过,有的人直接就多次shuffle之后跑贪心也过了,讨论区也有很多人乱搞过题。
我觉得,如果出题人认真写过每个部分部分分,肯定是能发现只输出最大值或者最大的正数加最大负数(也就是sub2和sub3做法),可以通过大部分数据,由此也可以知道数据比较水。那既然知道数据比较水而不更改,再加上出题人提到了shuffle后DP也有一定正确性,是否意味着本题数据就真的造不强?有没有同学能够说明一下本题数据在随机下确实很难造强?