可以不用二分做吗,搜索做法全错求调
查看原帖
可以不用二分做吗,搜索做法全错求调
1086462
HYJHELLO楼主2023/11/16 21:24
#include<bits/stdc++.h>
using namespace std;
int N,M,A[100001];
int mxn[100001],item;
int ans=1919810;
void s(int f1,int f2)
{
	int max=0;
	int r=0;
	for(int i=f1;i<=f1+f2;i++)
	{
		r+=A[i];
	}
	mxn[item]=r;
	item++;
	for(int i=1;i<N-f1-f2;i++)
	{
		if(f1+f2+1>=N-1)
		{
			int m=0;
			for(int i=0;i<100001;i++)
			{
				if(m<mxn[i])
				{
					m=mxn[i];
				}
			}
			if(m<ans)
			{
				ans=m;
				return ;
			}
		}
		else
		{
			s(f1+f2+1,i);
		}
	}
}
int main()
{
	cin>>N>>M;
	for(int i=0;i<N;i++)
	{
		cin>>A[i];
	}
	if(N==M)
	{
		int min=9999999;
		for(int i=0;i<N;i++)
		{
			if(A[i]<min)
			{
				min=A[i];
			}
		}
		cout<<min;
		return 0;
	}
	for(int i=0;i<=N;i++)
	{
		for(int j=1;N-j+1<=M;j++)
		{
			s(i,j);
		}
	}
	cout<<ans;
	return 0;
}

不会二分

2023/11/16 21:24
加载中...