社区讨论
为啥这一题的二分答案,题解里面全是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 条回复,欢迎继续交流。
正在加载回复...