HDU 4957 Poor Mitsui
题解:记答案为ans,已知,对一个确定的顺序,计算所用的时间长短就是从最后向前计算,计算方法如下:
ans+=(p[i].b+ans*p[i].a)/(v-p[i].a)
那么,应该如何调整顺序使得答案最小呢?我们将这个式子拆开得到
ans+=p[i].b/(v-p[i].a)+(ans*p[i].a)/(v-p[i].a)
显然,与之前的ans和p[i].b/v-p[i].a有关,p[i].b/(v-p[i].a)的值越小,产生的ans就越小,那么在下一次计算时,(ans*p[i].a)/(v-p[i].a)的值就越小,所以我们按照p[i].b/p[i].a的大小排序,然后按照上面的式子计算就可以了。至于判断无法实现,就是当一个桶漏水比接水快时一定无法完成(当然那个桶需要的水量为0的情况特殊考虑)
需要注意的是b==0的情况,需要的时间为0,昨晚在BestCoder就是这么被Hank的,考虑还是不够周到,T^T。
#include <cstdio>
#include <algorithm>
using namespace std;
struct bu{double a,b;}p[50];
int T,n; double v;
int cmp(bu a,bu b){return(a.b/a.a<b.b/b.a);}
int main(){
scanf("%d",&T);
while(T--){
int flag=1; double ans=0;
scanf("%d%lf",&n,&v);
for(int i=0;i<n;i++)scanf("%lf",&p[i].a);
for(int i=0;i<n;i++)scanf("%lf",&p[i].b);
for(int i=0;i<n;i++)if(p[i].a>=v&&(p[i].b!=0)){flag=0;break;}
if(flag==0){puts("-1");continue;} sort(p,p+n,cmp);
for(int i=0;i<n;i++)if(p[i].b!=0){ans+=(p[i].b+ans*p[i].a)/(v-p[i].a);}
printf("%.0lf\n",ans);
}
return 0;
}
HDU 4957 Poor Mitsui的更多相关文章
- HDU 4952 Poor Mitsui(贪心)
HDU 4957 Poor Mitsui pid=4957" style="">题目链接 思路:利用相邻交换法去贪心就可以.注意容积为0的情况,这是个坑点 代码: ...
- hdu 4803 Poor Warehouse Keeper(贪心+数学)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/26005267 题目链接:hdu 4803 P ...
- hdu 4957 贪心破木桶接水大trick
http://acm.hdu.edu.cn/showproblem.php?pid=4957 拿n只破的木桶去接水,每只木桶漏水速度为a[i],最后要得到b[i]单位的水,自来水的出水速度为V,木桶里 ...
- [hdu 4959]Poor Akagi 数论(卢卡斯数,二次域运算,等比数列求和)
Poor Akagi Time Limit: 30000/15000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...
- hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Ot ...
- HDU 4803 Poor Warehouse Keeper
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4803 解题报告:有一个记录器,一共有两个按钮,还有两行屏幕显示,第一行的屏幕显示的是数目,第二行的屏幕 ...
- [BestCoder Round #5] hdu 4956 Poor Hanamichi (数学题)
Poor Hanamichi Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 4803 Poor Warehouse Keeper (贪心+避开精度)
555555,能避开精度还是避开精度吧,,,,我们是弱菜.. Poor Warehouse Keeper Time Limit: 2000/1000 MS (Java/Others) Memor ...
- HDU 4803 Poor Warehouse Keeper(贪心)
题目链接 题意 :屏幕可以显示两个值,一个是数量x,一个是总价y.有两种操作,一种是加一次总价,变成x,1+y:一种是加一个数量,这要的话总价也会相应加上一个的价钱,变成x+1,y+y/x.总价显示的 ...
随机推荐
- leetcode Linked List Cycle python
# Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = ...
- leetcode Minimum Depth of Binary Tree python
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...
- OC语法7——内存管理之@property参数
@property的参数: 我们已经知道为了给开发者提供便捷,OC提供了@porperty关键字,它可以自动生成属性的set和get方法. 但是我们又知道,在OC中还面临者对象内存管理的问题,而且我们 ...
- jedis入门一
一.下载Jedis的依赖包jedis-2.1.0.jar,然后将其添加到classpath下面. 1. 定义连接:Redis暂时不要设置登录密码 Jedis jedis = new Jedis(&qu ...
- Linux下为何都是文件的理解
所谓“文件”,就是在我们的电脑中,以实现某种功能.或某个软件的部分功能为目的而定义的一个单位. Linux都是以文件的形式存在,当我们访问某个文件(Linux中的文件有目录,连接,普通文本),由于Li ...
- HTML5 标签元素的一些注意事项
不运行写结束标记的元素(但标签元素): area.base.br.col.command.embed.hr.img.input.keygen.link.meta.param.source.track. ...
- Combotree,datebox 启用 禁用
combotree <input type="checkbox" id="ckMonitor"></input> <input i ...
- Tempo 2.0
Tempo 2.0 Tempo is an easy, intuitive JavaScript rendering engine that enables you to craft data tem ...
- WPF的重要新概念
原文 http://www.cnblogs.com/free722/archive/2011/11/12/2238654.html 逻辑树与可视树 XAML天生就是用来呈现用户界面的,这是由于它具有层 ...
- Android NDK 编译FFmpeg(不需要复杂的环境变量设置)
环境: CentOS6.2——64位 借鉴:https://vec.io/posts/how-to-build-ffmpeg-with-android-ndk 在根目录下创建work文件夹:cd / ...