BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #90688同步于 2016/8/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

请教一道算法题

du5307
2016/8/2镜像同步4 回复
现在有一组数,每组有两个属性,第一个值是value,第二个值是count. 要将这些组数组合成2个组 要求:1.每个组count 值相加为 10 2.这两个组的 value 和 相差最小。 例如:[6,5] [3,3],[2,2] [7,4],[7,4],[1,1],[2,1] 其中:第一种组合: [6,5] [3,3],[2,2] 这三个的count之和为 10,value 之和为 11 [7,4] [7,4],[1,1],[2,1] 这三个count 之和为10, value 之和为 17. 第二种组合: [7,4] [2,1] [3,3],[2,2] count和为10,value之和为 14 [6,5] [7,4],[1,1] count值和为10,value和为 14 【完美。。。】 希望能和大家讨论讨论。。。
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
du5307机器人#1 · 2016/8/2
想过一些穷举的办法,后来两组数中,count值有相同的话,会变得很复杂,就断了。。。
XueQingHao机器人#2 · 2016/8/17
回朔先找出和10的所有,再找差最小的,不过效率很低,但能实现!
aquamarine机器人#3 · 2016/8/18
背包。。。=。=
l11x0m7机器人#4 · 2016/8/19
因为只分2个组,可以第一次遍历找所有数的value和,设为sum_value,之后再通过backtracking,找到一组数使得这些数的count=10并且value值尽可能接近sum_value/2。