关于简单的二分(我也不会)
查看原帖
关于简单的二分(我也不会)
376481
Carrot_Rui楼主2020/12/5 10:23

这题只对了40分

样例没过相差了一,但是自己编了几个过了

求教大佬

代码如下:

#include<bits/stdc++.h>
#define MAXN 1000001

using namespace std;

int n,m,a[MAXN];

int main()
{
	scanf("%d%d",&n,&m);
	
	int l=0,r=-0xffff;
	
	for(int i=1;i<=n;i++){
		scanf("%d",a+i);
		if(a[i]>r) r = a[i];
	}
	
	while(l<r){
		
		int mid = l+r >>1;
		
		int ans=0;//每次更新数值 
		
		for(int i=1;i<=n;i++)
			if(a[i]>mid)
			 ans += a[i]-mid;//目标高度所能得到的木材 
			 
		if(ans < m) r = mid - 1;
		else  l = mid + 1;
	}
	printf("%d",r);
	return 0;
}
2020/12/5 10:23
加载中...