POJ_3262_Protecting the Flowers(greedy)
来源:互联网 发布:装饰类java 编辑:程序博客网 时间:2024/05/09 17:22
Description
Farmer John went to cut some wood and left N (2 ≤ N ≤ 100,000) cows eating the grass, as usual. When he returned, he found to his horror that the cluster of cows was in his garden eating his beautiful flowers. Wanting to minimize the subsequent damage, FJ decided to take immediate action and transport each cow back to its own barn.
Each cow i is at a location that is Ti minutes (1 ≤Ti ≤ 2,000,000) away from its own barn. Furthermore, while waiting for transport, she destroysDi (1 ≤Di ≤ 100) flowers per minute. No matter how hard he tries, FJ can only transport one cow at a time back to her barn. Moving cowi to its barn requires 2 ×Ti minutes (Ti to get there andTi to return). FJ starts at the flower patch, transports the cow to its barn, and then walks back to the flowers, taking no extra time to get to the next cow that needs transport.
Write a program to determine the order in which FJ should pick up the cows so that the total number of flowers destroyed is minimized.
Input
Lines 2..N+1: Each line contains two space-separated integers, Ti andDi, that describe a single cow's characteristics
Output
Sample Input
63 12 52 33 24 11 6
Sample Output
86
Hint
题意:农夫养的N头牛在他的花园里吃花!这让农夫很苦恼,他一次只能把一头牛赶回牛栏,现在给你赶回每头牛到牛栏的时间Ti(也就是说来回要2*Ti的时间),以及这只牛每分钟能吃掉花的数量Di,求这些牛最少能吃掉多少花。
分析:贪心题。我们拿出两头牛a,b来考虑。若先把牛a赶走,那么吃掉的花的数量是2*(Ta)*(Db);若先把牛b赶回牛栏,那么吃掉花的数量是2*(Tb)*(Da)。所以最优化原则就是取min(2*(Ta)*(Db),2*(Tb)*(Da))。以此类推,贪心规则就出来了,按照此方法sort一遍就行了。
题目链接:http://poj.org/problem?id=3262
代码清单:
#include<set>#include<map>#include<cmath>#include<queue>#include<stack>#include<ctime>#include<cctype>#include<string>#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long ll;typedef unsigned long long ull;typedef unsigned int uint;const int maxn = 100000 + 5;const int maxv = 200000 + 5;struct Point{ int T; int D;}point[maxn];int N;bool cmp(Point a,Point b){ return a.D*b.T>a.T*b.D;}void input(){ scanf("%d",&N); for(int i=0;i<N;i++){ scanf("%d%d",&point[i].T,&point[i].D); }}void solve(){ sort(point,point+N,cmp); ll ans=0,t=0; for(int i=0;i<N;i++){ ans=ans+(ll)point[i].D*t; t=t+(ll)(2*point[i].T); } printf("%I64d\n",ans);}int main(){ input(); solve(); return 0;}
- POJ_3262_Protecting the Flowers(greedy)
- POJ_3262 Protecting the Flowers(greedy)
- Protecting the Flowers(3262)
- POJ3262-Protecting the Flowers
- [Usaco07Jan] Protecting the Flowers
- [POJ3262]Protecting the Flowers
- POJ Protecting the Flowers
- Protecting the Flowers
- Protecting the Flowers (贪心)
- Protecting the Flowers
- the summary of greedy strategy
- POJ 3262 Protecting the Flowers
- POJ 3262 Protecting the Flowers
- POJ-3262-Protecting the Flowers
- Poj 3262 Protecting the flowers
- POJ 3262 Protecting the Flowers
- POJ-3262-Protecting the Flowers
- POJ-3264-Protecting the Flowers
- 新手上路开车技巧 八步教你如何倒车入位
- 时代即将来临的实境感。
- 河南治青少年自闭症好的yiyuan
- SpringMVC 实现Excel导入
- 游戏《部落冲突》中的心理学运用
- POJ_3262_Protecting the Flowers(greedy)
- 【学习拾遗】Jquery(一)--核心
- 【Android】判断快捷方式是否存在——兼容性更强(速度提升12倍)
- 11个技巧:提升程序员工作效率
- 智能指针原理分析与自己的shared_ptr实现
- MySQL启动脚本 mysql.server 详解
- ajax基础知识点
- vsftp被动模式启用iptables访问设置
- 河南治疗小儿自闭症哪个yiyuan好