P3743求调试玄关
  • 板块灌水区
  • 楼主iwowo
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/5/16 18:44
  • 上次更新2024/5/16 20:58:24
查看原帖
P3743求调试玄关
672388
iwowo楼主2024/5/16 18:44
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <iomanip>
#include <algorithm>
#include <chrono>
#include <vector>
#include <ctime>
#include<map>
#include <cstdlib>
#include <set>
#include <queue>//队列
#include <stack>//栈 
#include<bitset>
#include<sstream>
using namespace std;
int n;
double p;
double a[1000001], b[000001];
double l = 0, r = 1e10;
double sum = 0;
int check(double ans)
{
	double q = p * ans;
	sum = 0;
	for (int i = 1; i <= n; i++)
	{
		if (a[i] * ans <= b[i])
		{
			continue;
		}
		sum += (a[i] * ans - b[i]);
	}
	return sum <= q;
}
int main() {
	cin >> n >> p;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i] >> b[i];
		sum += a[i];
	}
	if (sum <= p)
	{
		cout << -1.000000 << '\n';
		return 0;
	}
	while (r - l > 1e-6)
	{
		double mid = (l + r) / 2;
		if (check(mid))
		{
			l = mid;
		}
		else
		{
			r = mid;
		}
	}
	cout << fixed << setprecision(10) << l << '\n';
	return 0;
}

2024/5/16 18:44
加载中...