社区讨论

为啥这一题的二分答案,题解里面全是l<r,答案记录法l<=r为啥不行

P8647 [蓝桥杯 2017 省 AB] 分巧克力参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@m3cu6kg8
此快照首次捕获于
2024/11/11 17:44
去年
此快照最后确认于
2024/11/11 20:46
去年
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int> a;
vector<int> b;

bool pp(int mid,int k,int n)
{int count=0;
	int sum=mid*mid;
	for(int i=0;i<n;i++)
	{
	
		if(sum<=a[i]*b[i])
		count+=(a[i]*b[i]/sum);
	}
	if(count<=k)
	return true;
	else
	return false;	
}
signed main()
{
	int n,k;
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		a.push_back(x);
		b.push_back(y);
	}
	int l=1;
	int r=100000;
	int result=0;
	while(l<=r)
	{
		int mid=(l+r+1)/2;
		if(pp(mid,k,n))
		{
		result=mid;
			r=mid-1;
		}
		else
		{
		
		l=mid+1; 
		}
		
	}
	cout<<result;
	 

 }

回复

0 条回复,欢迎继续交流。

正在加载回复...