UVA 11729
题意:完成一个任务有两部分:布置时间B和执行时间J。布置一个任务的同时不能布置另一个任务。给一些任务,要求这些任务的最短完成时间。
解题思考:
- 执行时间J长的要先布置。即要对J从大到小排序。
- 书中是证明交换相邻一对任务,不会得到更优的解。看的时候不太理解为什么是相邻呢?其实交换任意两个任务和交换相邻任务是等价的。交换任意任务可以推出交换相邻任务;两个不相邻的任务A、B交换其实可以用许多个相邻交换“组成”。
UVA 11300
题意:每个人开始时有一定数量的金币a[i],每个人可以借出和收取其他人的金币,问最少的转手金币数。
解题思考:
- 书中用了一步等价的“替换”,就是无论相邻人互相转手多少金币,一定可以表示为A->B转了x个金币,而x可以是正数也可以是负数,于是我们就可以“等价出”金币的流动方向为顺时针或者逆时针。
- 书中列出了n个转手的方程(第n个可以由前面方程推出),然后将n-1个方程表示为只与x1有关的方程,转化为求数轴上一点到其他点距离的最小值。
- 这一点答案是中位数。因为如果某一点左右两边没有相同数目的点,那么这一点往点多的方向移总可以减少总的距离。
LA 3708
题意:n个雕像均匀分布在环上,现在加入m个雕像要求移动后也均匀分布,求总的最小移动距离之和。
解题思考:
- 本题中要证明:总有一个雕像不动。其实证明方法和上一题类似,我们会发现中位数的移动x[n/2]为0,从而总有一个雕像不动。
- 坐标缩小,使得四舍五入之后就是结果,方便求解。