欢迎光临散文网 会员登陆 & 注册

poj 3262 牛吃花

2023-03-24 13:12 作者:树莓摸鱼人  | 我要投稿

N头牛在花园吃花,约翰将每头牛运回牛舍并回到花园需要时间为2* Ti ,每头牛在被运往牛舍之前每分钟吃 Di 朵花,约翰每次只能运送一头牛回到牛舍,编写一个程序来确定约翰运送奶牛的顺序,使得被吃掉的花总数最少

输入

第 1 行:单个整数 N 行 2..N+1:每行包含两个空格分隔的整数,TiDi,用于描述一头奶牛的特征

输出

第 1 行:单个整数,即被毁花的最小数量

示例输入

6
3 1
2 5
2 3
3 2
4 1
1 6

示例输出

86


解析

因为我们希望牛吃的花数量最少,所以我们应该优先送回那些吃的花比较 “多” 的牛,这个“多”是个相对的概念,不是单纯的哪头牛吃的更“快”

举个例子:在只有两头牛c1和c2的情况下,D1=7、T1=7,D2=2、T2=1

先送c1回牛舍被吃掉的花数为2×T1×D2=28,先送c2回牛舍被吃掉的花数为2×T2×D1=14。显然先送c2回牛舍是更好的选择,也就是说    T1×D2<T2×D1的时候,我们认为c1吃花吃的更多

有了这个思路,就可以对所有的牛进行一个吃花多少的降序排列,但是又有另一个问题 “公式中的时间T,在多个牛排序中是不同的” 比如三个牛进行比较时比较的是T1×D2、T2×D1和T2×D3、T3×D2 花和时间都变了,可以像只有两头牛那样比较吗?也是可以的,下面给出证明:

%E5%B7%B2%E7%9F%A5T1%C3%97D2%3CT2%C3%97D1%2CT2%C3%97D3%3CT3%C3%97D2%EF%BC%8C%E8%AF%81T1%C3%97D3%3CT3%C3%97D1%5C%5C%0AT1%C3%97D2%3CT2%C3%97D1%5Cquad%20%E4%B8%A4%E4%BE%A7%E4%B9%98D3-%3E%5Cquad%20T1%C3%97D2%C3%97D3%3CT2%C3%97D1%C3%97D3%3CT3%C3%97D2%C3%97D1%5C%5C%0AT1%C3%97D2%C3%97D3%3CT3%C3%97D2%C3%97D1%5Cqquad%E6%B6%88%E5%8E%BBD2-%3E%5Cqquad%20T1%C3%97D3%3CT3%C3%97D1%5C%5C%0A%E6%89%80%E4%BB%A5%E5%A4%9A%E4%B8%AA%E7%89%9B%E4%B9%9F%E5%8F%AF%E4%BB%A5%E7%94%A8%E8%BF%99%E6%A0%B7%E7%BB%9F%E4%B8%80%E7%9A%84%E6%96%B9%E6%B3%95%E8%BF%9B%E8%A1%8C%E5%90%83%E8%8A%B1%E6%95%B0%E9%87%8F%E7%9A%84%E6%AF%94%E8%BE%83

题目链接:poj.org/problem?id=3262

poj 3262 牛吃花的评论 (共 条)

分享到微博请遵守国家法律