求调
查看原帖
求调
915109
zl_fx_bjs_hd_yj楼主2024/6/13 18:24
#include <bits/stdc++.h>
#define int long long
#define p2 (p<<1)
#define p3 ((p<<1)|1)
#define mid (l+r>>1)
#define f(i,l,r) for(int i=(l);i<=(r);++i)
#define g(i,r,l) for(int i=(r);i>=(l);--i)
using namespace std;
const int inf=0x3f3f3f3f3f3f3f3f,N=505;
int n,m,a,b;
int A[N][N];
int val[N];
int sum[N][N];
signed main(){
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
//  system("pause");
	cin>>n>>m>>a>>b;
	if(a>b) swap(a,b);
	f(i,1,n){
		f(j,1,m){
			cin>>A[i][j];
		}
	}
	f(i,1,n){
		f(j,1,m){
			sum[i][j]+=sum[i-1][j]+A[i][j];
		}
	}
	int ans=inf;
	f(i,1,n){
		f(j,i,n){
			f(k,1,m) val[k]=sum[j][k]-sum[i-1][k];
			int r=1,now=0;
			f(l,1,m){
				while(r<=m&&now+val[r]<=b) now+=val[r],r++;
				ans=min(ans,abs(now-a)+abs(now-b));
				now-=val[l];
			}
			r=1,now=0;
			f(l,1,m){
				while(r<=m&&now+val[r]<a) now+=val[r],r++;
				ans=min(ans,abs(now-a)+abs(now-b));
				now-=val[l];
			}
			r=1,now=0;
			f(l,1,m){
				while(r<=m){
					if(now+val[r]>b){
						now+=val[r];
						r++;
						break;
					}else now+=val[r],r++; 
				}
				ans=min(ans,abs(now-a)+abs(now-b));
				now-=val[l];
			}			
		}
	}
	cout<<ans;
}
2024/6/13 18:24
加载中...