奇怪现象
查看原帖
奇怪现象
1340578
piyuhan666楼主2024/8/23 10:52
#include<bits/stdc++.h>
using namespace std;
long long m,n;
long long a[300010];
bool ch(int mid){
	int sum=0;
	for(int i=1;i<=m;i++){
		if(a[i]%mid!=0){//不能整除,就还得有一个小朋友把剩下的拿完,小朋友加一 
			sum++;
		}
		sum+=a[i]/mid;	
	}
	return sum>=n;
}
int main(){
	cin>>n>>m;
	long long l=0,r=0,mid,ans;
	for(int i=1;i<=m;i++){
		cin>>a[i];
		r=max(r,a[i]);
	}
	while(l<=r){
		mid=l+(r-l)/2;
		if(ch(mid)){
			ans=mid;
			l=mid+1;
		}
		else{
			r=mid-1;
		}
	}
	cout<<ans;
	return 0;
} ```

这样不能AC,答案也是错的
而
#include<bits/stdc++.h>
using namespace std;
long long m,n;
long long a[300010];
bool ch(int mid){
	int sum=0;
	for(int i=1;i<=m;i++){
		if(a[i]%mid!=0){//不能整除,就还得有一个小朋友把剩下的拿完,小朋友加一 
			sum++;
		}
		sum+=a[i]/mid;	
	}
	return sum<=n;
}
int main(){
	cin>>n>>m;
	long long l=0,r=0,mid,ans;
	for(int i=1;i<=m;i++){
		cin>>a[i];
		r=max(r,a[i]);
	}
	while(l<=r){
		mid=l+(r-l)/2;
		if(ch(mid)){
			ans=mid;
			r=mid-1;
		}
		else{
			l=mid+1;
		}
	}
	cout<<ans;
	return 0;
} 
这样就可以
2024/8/23 10:52
加载中...