救我
查看原帖
救我
568903
Miracle1024楼主2023/5/3 20:11
#include<iostream>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
typedef long long ll;
int w[2][100007]={0},c=0,czh=0,k,n,m,sd,zs=-1,num,a=1,b,y=-1,mid=1;
int cnt (int mid){
	zs=0x3f3f3f;
	k=0;
	c=1;
	for(int i=1;i<=n;i++){
		if(w[1][i]-w[1][k]>mid){
			c++;
			cout<<k<<endl;
			k=i-1;
		}
	}
	return c;
}
int main(){
//	freopen("doc.in","r",stdin);
//	freopen("doc.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>sd;
		czh+=sd;
		w[0][i]=sd;
		w[1][i]=czh;
		mid=max(sd,mid);
	}
	zs=y;
	b=czh;
	a=1;
//	cout<<a<<" "<<b<<" "<<c<<" "<<mid<<endl;
	while(a<b){
		if(cnt(mid)>m){
			a=mid;
		}
		else{
			b=mid-1;
		}
//		cout<<a<<" "<<b<<" "<<c<<' '<<mid<<endl;
		mid=a+((b-a+1)>>1);
	}
	cout<<a;
    return 0;
}
2023/5/3 20:11
加载中...