Step 1
假设我们确定了要去哪些商店,要找完成这一方案的最小时间,那么就要确定一个最优的顺序。通常这种问题,要用一个叫 Exchange Argument
的思想确定一个贪心的标准,通过这个标准来对商店进行排序。
首先我们考虑两个商店 i i i 和 j j j,它们在要去的顺序中是相邻的,那么考虑交换它们会对答案造成什么影响。假设在此之前已经花费了 t t t 的时间。
- 先去 i i i 再去 j j j 花费时间: a i t + b i + 1 + a j ( t + a i t + b i + 1 ) + b j + 1 = ( a i + a j ) t + a i a j t + a j ( b i + 1 ) + b i + b j + 2 a_it+b_i+1+a_j(t+a_it+b_i+1)+b_j+1=(a_i+a_j)t+a_ia_jt+a_j(b_i+1)+b_i+b_j+2 ait+bi+1+aj(t+ait+bi+1)+bj+1=(ai+aj)t+aiajt+aj(bi+1)+bi+bj+2
- 先去 j j j 再去 i i i 花费时间: a j t + b j + 1 + a i ( t + a j t + b j