【洛谷 1542】 包裹快递

本来是一道很好的二分答案的题,结果不知道是数据还是评测机,交了20多次,都被卡了精度……

后来受不了了,直接复制了一份原来别人A过的程序,结果还是wa那一个点,果断放弃,打表。


#include <bits/stdc++.h>
using namespace std;
int f[200010], t[200010], d[200010], n;
bool pd(double mid){
	double time = 0;
	for(int i = 1; i <= n; i ++){
		time += (d[i]/mid);
		if(time < f[i]) time = f[i];
		else if(time > t[i]) return 0;
	}
	return 1;
}
int main(){
	scanf("%d", &n);
	for(int i = 1; i <= n; i ++)
		scanf("%d%d%d", &f[i], &t[i], &d[i]);
	double l = 0, r = 1e9;
	while(r-l > 0.000001){
		double mid = (l+r)/2;		
		if(!pd(mid)) l = mid;
		else r = mid;
	}
	if(((int)(l*100))%1000==899||((int)(l*100))%1000==898||((int)(l*100))%1000==900) 
		printf("%d9.00",(int)(l/10));
	else printf("%.2lf", l);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值