POJ 3262 Protecting the Flowers
2015-08-18 19:07
232 查看
POJ 3262 Protecting the Flowers
保护花朵。。。。约翰的奶牛每分钟吃掉D_i朵花,把它赶走需要T_i分钟(来回加倍)。问最小损失花朵数量。
n头搬走一头剩下n-1在吃花(竟然不是草),那到底搬哪一头好呢?这就有一个效率问题。哪个牛“吃”的最猛搬哪个,每分钟吃的数量已经是固定的了,看每个牛的损失比例:用(吃的速度 )D 除以 T(干的时间)。就把时间变量解决了。现在问题就变成了:在赶每头牛时间都一样的情况下,赶那头牛好(当然是D/T大的了—_—|||)
保护花朵。。。。约翰的奶牛每分钟吃掉D_i朵花,把它赶走需要T_i分钟(来回加倍)。问最小损失花朵数量。
n头搬走一头剩下n-1在吃花(竟然不是草),那到底搬哪一头好呢?这就有一个效率问题。哪个牛“吃”的最猛搬哪个,每分钟吃的数量已经是固定的了,看每个牛的损失比例:用(吃的速度 )D 除以 T(干的时间)。就把时间变量解决了。现在问题就变成了:在赶每头牛时间都一样的情况下,赶那头牛好(当然是D/T大的了—_—|||)
#include<iostream> #include<algorithm> using namespace std; struct Cow { double T,D,E; }; Cow cow[100000]; //按D/T的值从大到小排序 bool is_less(const Cow& a,const Cow& b) { return a.E>=b.E; } int main() { int N; cin>>N; int i=0; int total_destroy=0; for(;i<N;i++) { cin>>cow[i].T>>cow[i].D; cow[i].E=cow[i].D/cow[i].T; //顺便记录下当前这批牛的总毁花能力-_-,因为后面发现搬走一头要用这个来计算 total_destroy+=cow[i].D; } sort(cow,cow+N,is_less); //这个要注意:如果结果是相加的一个数字就要注意是否会溢出,设置成long long比较保险 long long destroy=0; for(i=0;i<N;i++) { total_destroy-=cow[i].D; destroy+=cow[i].T*2*total_destroy; } cout<<destroy<<endl; return 0; }
相关文章推荐
- HDU 1507 Uncle Tom's Inherited Land*(行列匹配||棋盘覆盖||黑白染色||奇偶匹配(1X2的矩形覆盖))
- Android架构
- category和protocol 第五天稍晚了一些。
- L轻松学习inux教程5 知识与学习bash
- 编码解码过程中的信息丢失现象
- 数学F - The Snail
- c# 下三角实现 九九乘法口诀表
- 【sphinx】Sphinx在linux上的安装配置
- nyoj 36 最长公共子序列【LCS模板】
- maven实战笔记 - maven 安装配置
- 书摘---网络搜集整理 (1--10)
- jS数组
- Mysql引起的spring事务失效
- 洛谷1001 A+B Problem
- 时间转换
- 第四周第二天
- java垃圾回收之Minor GC和Major GC
- Java关键字static、final使用小结
- Activity的生命周期
- greenDAO学习分享总结