求助,TLE了6个点
查看原帖
求助,TLE了6个点
508834
kexinluo楼主2022/1/31 11:08

AC了4个,TLE了6个点
(而且为什么不能下载数据点qwq)

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int M = 1e5 + 10;
const int INF = 0x3f3f3f;

int n, m;
ll st[M], ed[M];
ll lft, rit;

bool judge(ll d)
{
	ll l = st[1], cow = 0;
	for (int i=1; i<=m; i++)
	{
		l = max(l, st[i]);
		if (ed[i] >= l)
		{
			ll x = (ed[i] - l) / d + 1;
			cow += x;
			l += x * d;
		}
	}
	return cow >= n;
}

int main()
{
	scanf("%d %d", &n, &m);
	for (int i=1; i<=m; i++)
	{
		scanf("%I64d %I64d", &st[i], &ed[i]);
	}
	sort(st + 1, st + 1 + m);
	sort(ed + 1, ed + 1 + m);
	lft = st[1], rit = ed[m];
	ll l = 1, r = rit;
	while (l < r)
	{
		ll mid = (l + r) / 2;
		if (judge(mid)) l = mid;
		else r = mid - 1;
	}
	cout << l << endl;
	return 0;
}

还请巨佬帮忙查错orz

2022/1/31 11:08
加载中...