#P3262. Protecting the Flowers

    ID: 2263 传统题 2000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>其他排序USACO 2007 January Silver贪心算法贪心策略

Protecting the Flowers

题目描述

农夫约翰像往常一样去砍木头,留下了N(2 ≤ N ≤ 100,000)头奶牛在吃草。当他回来时,惊恐地发现这群奶牛正在他的花园里吃他美丽的花。为了最小化后续的损失,约翰决定立即采取行动,把每头奶牛送回各自的牛棚。

每头奶牛i所在的位置距离自己的牛棚需要Ti分钟(1 ≤ Ti ≤ 2,000,000)。此外,在等待运输的过程中,它每分钟会毁掉Di(1 ≤ Di ≤ 100)朵花。无论约翰怎么努力,他一次只能运输一头奶牛回牛棚。将奶牛i运到牛棚需要2×Ti分钟(去需要Ti分钟,回来也需要Ti分钟)。约翰从花田出发,把奶牛运到牛棚,然后走回花田,前往下一头需要运输的奶牛时不花费额外时间。

编写一个程序,确定约翰运输奶牛的顺序,使得被毁掉的花的总数最少。

输入格式

第1行:一个整数N
第2到N+1行:每行包含两个用空格分隔的整数Ti和Di,表示一头奶牛的特征

输出格式

第1行:一个整数,表示被毁掉的花的最小数量

输入数据1

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

输出数据1

86  

提示

约翰按以下顺序运输奶牛:6、2、3、4、1、5。当他运输奶牛6到牛棚时,其他奶牛毁掉了24朵花;接下来运输奶牛2,又损失了28朵花;运输奶牛3、4、1时,分别损失16、12和6朵花;运输奶牛5时,已经没有其他奶牛在毁花了,所以这头奶牛造成的损失为0。这种方式下总共损失的花为24 + 28 + 16 + 12 + 6 = 86。

题目来源

USACO 2007 年1月银奖