大神分享的一个算法题

题目: 一个水槽,最多可容纳C升水,现有t[0]~t[n-1] N次输水过程,每次输水时间为t[i]秒,每次单位时间内输入水量为p[i];问:每秒排水量最少为多少,才可以保证水槽的水不会溢出。


方案一:不考虑排水管排空现象,解题的一种思路为:只需要考虑每次排水的最后时间,水槽不会溢出即可,每次排水量为t[i]*x[i],

第一次需要排除水为( t[0]*p[0]-C)/t[0]

第二次需要排除水为(t[0]*p[0] + t[1]*p[1]-C)/(t[0]+t[1])

.

.

.

第N次需要排除水为(t[n-1]*p[n-1] + t[n-2]*p[n-1] + t[0]*p[0] -C)/(t[0]+t[1] +...+t[n-1])



方案二:考虑排水可能为空

遍历所有的区间,t[i] ~t[j] 计算这个区间最大的排水速率R[ij](个人觉得这个方案有点不好,基本遍历了所有)


方案三:考虑单调性 使用二分法查找。(不太懂大神的思路。。以后懂了再补充)


有一种回高中做数学题的感觉..脑袋明显不够灵光了..



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值