Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
你可以对这两个方法测试一下,是不是所有数据解都一样的In Reply To:这个题目的数据太弱了吧?用两种可能对立的方法都能ac? Posted by:queyue2004 at 2005-06-12 10:04:37 其实这两个很可能是等价的 以前有一个证明的,可以缩小到6以内吧,好象 叫同学们帮忙看看吧,我没时间 > 我是这样做的,dp + 缩小数据规模 > > 用一个bool数组存放两人手中的石子的可能的差,一开始的时候可能的差为{0}; > 若此状态中有一个可能差为{....... ,a,...}那么取了一个价值为v的石子后集合变成 > {....., a + v,a - v,.....} > 如果 a - v < 0. a - v 变成 v - a. > > 然后我用两种不同的方法缩小数据规模, > 一,当 a + v > 60 将 (a + v) % 60后放入集合 (bool数组)。 > > 二,当a + v > 60 将 a + v不给予考虑。 > > 最后判断集合中是否有0,也就是两人手中的价值相差0, > true can > false can't > > 这两种方法都AC了, > 但是这些是有明显不同的, > 第一种是认为 任何总和 60 价值的石子都可以分成两堆价值和为30的石子,因为取模了,所以可能导致 > 一些无法分割的情况输出可分割 > > 第二种可以认为是种剪枝,认为当一种分配方案过程中,当一方手中的石子比另一方多60或者更多的话这 > 种方案明显不合理,去掉。如果这种方法错误的话,它可能丢掉一些可行解决。 > > 但是两种方法都AC了,why? Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator