Re: [理工] 交大108资演 题组15

楼主: FRAXIS (喔喔)   2019-12-29 12:14:52
※ 引述《gash55025502 (白影弓)》之铭言:
: https://i.imgur.com/yjPlqqI.jpg
: 大家好 想问这题的后面两小题
: 交大答案都是给A
: 想请问用什么方法可以达到O(n)的时间呢?
: 因为我能想到的好像也都是要先排序好 这样就花nlogn了
: 感谢大大
第一小题,使用标准的 DP 解法,应该是要 O(nm) = O(n^3) 时间。
第二小题,因为每个物品的重量都一样,所以只要价值最大的 m 个物品就好了,
所以只要 O(n) 时间(当 m 比 n 大时,就直接选全部)。
第三小题,因为物品的重量顶多是 2 ,所以全部物体的重量也顶多是 2n 而已。
使用标准的 DP 解法需要 O(n * 2n) = O(n^2)。
不过你可以先把重量为 1 的物品按照 value 递减排序,
然后把重量为 2 的物品按照 value 递减排序。
先从重量为 1 的物品中挑 m 个 value 最高的出来。
然后试着移除两个重量为 1 的物品,换重量为 2 的最高 value 物品,看
能不能得到更佳解。一直持续这过程直到不能再找到更佳解为止。
时间是花在排序上,所以需要 O(n lg n)。
作者: mistel (Mistel)   2019-12-29 12:38:00
请问第二题如果没sorting不是可能会花上O(n^2)找价值最大的吗:(因为我们不知道这回合的最大价值物品在哪里?
作者: ccapricorntw (Eating)   2019-12-29 15:01:00
不需要知道阿 只有n个物品 总重就n而已 但m是n^2所以直接全选
楼主: FRAXIS (喔喔)   2019-12-29 23:01:00
m 也有可能比 n 小,不过只要用 selection algorithm就可以在 O(n) 时间解第二题
作者: ccapricorntw (Eating)   2019-12-29 23:19:00
咦 m的n^2不是tight bound吗? 不会比n小吧?
楼主: FRAXIS (喔喔)   2019-12-30 07:16:00
如果是这样解读的话,那 2 和 3 小题就全选就好了根本就不用设计任何算法
作者: b10007034 (Warren)   2019-12-30 17:03:00
同意,完全不会过载就全选XD
作者: mistel (Mistel)   2019-12-30 23:11:00
懂了 感谢!!

Links booklink

Contact Us: admin [ a t ] ucptt.com