站外,玄关
  • 板块学术版
  • 楼主ygwlan
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/11/26 16:17
  • 上次更新2023/11/26 18:04:41
查看原帖
站外,玄关
747917
ygwlan楼主2023/11/26 16:17

https://qqwhale.com/problem/1786 70分代码

#include <bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
I AK IOI;
//set<int>::iterator it;
int n;
int a[100009],m,x;
int b[100009]; 
bool check(int mid){
	int sum=a[1],i=1,d=0;
    if(sum>mid){
        return 0;
    }
	while(i<=n){
		if(sum+a[++i]<=mid){
			sum+=a[i];
		}
		else if(a[i]<=mid){
			sum=a[i];
			d++;
		}
		else{
			return 0;
		}
	}
    if(sum<=mid){
			
	}
	else if(a[i]<=mid){
		sum=a[i];
		d++;
	}
	else{
		return 0;
	}
	return d<=m;
}
int main(){
	//sand(NULL);
	//if(rand()+rand()-rand()==1){
	//	  system("start https://www.luogu.com.cn/");
	//}
	//iosbase::sync_with_stdio(false);
	//cin.tie(NULL);
	scanf("%d%d",&n,&m);
	long long r=0;
	x=n-m;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		r+=a[i];
	}
	long long l=0;
	while(l<r){
		long long mid=l+(r-l)/2;
		if(check(mid)){
			r=mid;
		}
		else{
			l=mid+1;
		}
	}
	printf("%lld",l);
	return 0;
}


谢谢

2023/11/26 16:17
加载中...