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里取一个小的。
证毕。