首先我把 aia_iai 放进堆里。
然后我把 bi/2b_i / 2bi/2 放进堆里,然后标记一下这是二星,统计时再正常统计。
如果之前选了一星,那么统计该关二星时就不统计,而是再向堆里放一个 bi−aib_i - a_ibi−ai 的一星。
如果之前选了二星,那么统计该关一星时就不统计。
但是,这样搞的一个弊端是,如果需要最后一个星时拿了一关的两星,那么就会多拿星而导致时间浪费。
我们考虑从两个方面解决这个问题。
一、把最后那两星扔了,再去找别的一星。
二、从已经到手的星找一个时间最大的的扔掉。
最后从这两个方案中选一个时间最小的就行了。