POJ3262:Protecting the Flowers

——problem:有N头牛,每头牛有两个参数T和D。把每头牛送到目的地要2*Ti的时间,在这期间其他牛会吃掉2*Ti*SEGMA(Di)的花,问如何排放牛的顺序使得被吃到的花最少

——solution:排序

——url:http://poj.org/problem?id=3262

一开始以为只要按照D排序就可以了,结果WA了。

正确的应该按照D/T从大到小排序。

证明如下:

任取两头牛i和j,这两头牛需要的总时间为2*(Ti+Tj),在此时间中其他牛吃的花是一定的,因此只要考虑这两头牛就可以了。

若先送牛i,则牛j吃掉的花为2*(Ti*Dj),若先送牛j,则牛i吃掉的花为2*(Tj*Di),我们只要在两者里取个小的就可以了。

注意到T,D是大于0的,因此只要在DJ/TJ和DI/TI里取一个小的。

证毕。

posted on 2011-04-05 13:56  风也轻云也淡  阅读(219)  评论(0编辑  收藏  举报