求调
查看原帖
求调
1269423
huge_wave楼主2024/7/11 15:05
#include<bits/stdc++.h>
using namespace std;
const int N=600;
int s[N][N],qz[N][N],n,m,a,b,l=0,r=2100000000;
bool xxx(int mid){
	int ans=0,ll=1,ds=0;
	for(int i=1;i<=n;i++){
		ans=0;
		int d=0;
		for(int j=1;j<=m;j++){
			if(ans+qz[i][j]-qz[ll-1][j]>=mid){
				ans=0;
				d++;
			}
			else{
				ans+=qz[i][j]-qz[ll-1][j];
			}
		}
		if(d>=b){
			ll=i+1;
			ds++;
		}
	}
	return ds>=mid;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>a>>b;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>s[i][j];
			qz[i][j]=qz[i-1][j]+s[i][j];
		}
	}
	while(l<r){
		int mid=(r+l+1)>>1;
		if(xxx(mid)){
			l=mid;
		}
		else{
			r=mid-1;
		}
	}
	cout<<l;
	return 0;
}

2024/7/11 15:05
加载中...