P1873 砍树:求调
  • 板块题目总版
  • 楼主stardusts
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/5 15:51
  • 上次更新2024/7/5 17:14:38
查看原帖
P1873 砍树:求调
1341733
stardusts楼主2024/7/5 15:51

用二分写的答案,临界点怎么调都是错的,求改。

#include <bits/stdc++.h>
using namespace std;
map <long long,int> mp;
int l,r,n,a[1000005],big=0;
long long m;
long long get(int x)//求砍了多少树
{
	long long num=0;
	for (int u=1;u<=n;u++)
		num+=max(a[u]-x,0);
	return num;
}
int main()
{
	cin>>n>>m;
	for (int u=1;u<=n;u++)
	{
		cin>>a[u];
		big=max(big,a[u]);
	}
	l=0;
	r=big;
	int mid;
	while (l<r)
	{
		mid=(l+r)/2;
		int g=get(mid);
		//cout<<l<<' '<<r<<' '<<mid<<' '<<g<<endl;
		if (g>=m)
			l=mid+1;
		else
			r=mid;
	}
	cout<<mid;
		
	return 0;
} 
2024/7/5 15:51
加载中...