关于玄学二分答案错误
查看原帖
关于玄学二分答案错误
246979
SalomeJLQ楼主2020/8/9 18:24
#include<iostream>
using namespace std;
long long max(int aa,int bb){return aa>bb?aa:bb;}
long long a[1000005],n,m,i,high;
int main(){
	cin>>n>>m;
	for(i=1;i<=n;i++){cin>>a[i];high=max(high,a[i]);}
	int l=0,r=high;
	int mid=(l+r)/2;
	while(l<r){
		mid=(l+r)/2;int ans=0;
		for(i=1;i<=n;i++)ans+=max(0,a[i]-mid);
//		cout<<l<<" "<<r<<" "<<mid<<" "<<ans<<endl;
		if(ans>m)l=mid+1;
		else if(ans<m)r=mid;
		else{cout<<mid;return 0;}
	}
	cout<<mid;
	return 0;
}

感觉非常简单的二分答案,结果莫名9点WA……

看了下数据范围,改了个long long ,然后多A了三点……

于是乎我尝试了把<改成<=,l=mid+1改为l=mid,以及其他类似操作,每种组合都尝试过了,几乎每个点都A过,但是就是不能同时A……一会1,2,7,10AC,一会1,3,4,AC什么什么的

这就玄学了,蒟蒻求教各位大佬orz

2020/8/9 18:24
加载中...