#include<malloc.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<math.h>
#include<queue>
using namespace std;
int n,m;
int sum(int s)
{
int sum1=0;
int i=0;
for(i=0;i<n;i++)
{
sum1+=s;
s=(s+1)/2;
}
return sum1;
}
int erfen()
{
if(n==1) return m;
int l=1,r=m,middle;
while(l<=r)
{
middle=(l+r)/2;
if(sum(middle)==m) return middle;
else if(sum(middle)<m) l=middle+1;
else r=middle-1;
}
return r;
}
int main()
{
cin>>n>>m;
int ans=erfen();
cout<<ans;
return 0;
}
SCAU 18935 贪吃的小Q
最新推荐文章于 2022-04-05 22:57:37 发布
本文介绍了一种使用优化方法解决的题目,通过C++实现的`erfen`函数,计算如何将n个元素分配到m个区间,使得每个区间的累计和等于给定的目标值。核心算法包括`sum`函数求和及`interfen`函数的二分查找策略。
摘要由CSDN通过智能技术生成