point4wa,求助
查看原帖
point4wa,求助
366746
烛木楼主2020/9/24 22:16

第四个wa,怎么回事? (二分和正常写的不太一样)

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,m,b,d,p[100086];
int divide(int x,int y)
{
	b=0;
	d=1;
	int z=(x+y)/2;
	for(int i=1;i<=n;i++)
	{
		if(b+p[i]>=z)
		{
			b=p[i];
			d++;
		}
		else
		b+=p[i];
	}
	if(x==y-1)
	{
		return x;
	}	
	else if(d>m)
	divide(z,y);
	else if(d<=m)
	divide(x,z);
	
}
int main()
{
	//freopen("4.in","r",stdin);
	//freopen("4.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>p[i];
	}
	int ans=divide(1,1000000001);
	cout<<ans;
	return 0;
}
2020/9/24 22:16
加载中...