专栏文章

CF2091D Place of the Olympiad

CF2091D题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miprd23t
此快照首次捕获于
2025/12/03 16:41
3 个月前
此快照最后确认于
2025/12/03 16:41
3 个月前
查看原文

题目传送门

思路

这题很明显可以用二分答案。
每次检查以 midmid 为最长长度的长凳的凳子数量是否不小于 kk。若成立则保存答案且移动右端点,否则移动左端点。

AC Code:

CPP
#include <bits/stdc++.h>
using namespace std;
long long n,m;
long long k;
bool check(int x)
{
	long long r=n*((m/(x+1)*x)+(m%(x+1)));
	return r>=k;
}
void solve()
{
	cin >>n>>m>>k;
	long long l=1,r=m;
	long long ans=0;
	while(l<=r)
	{
		int mid=(l+r)/2;
		if(check(mid))
		{
			ans=mid;
			r=mid-1;
		}
		else l=mid+1;
	}
	cout <<ans<<'\n';
}
int main()
{
	int t;
	cin >>t;
	while(t--)
	{
		solve();
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...