社区讨论
二分60pts TLEon#3#4#5#10
P3017[USACO11MAR] Brownie Slicing G参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhju43tq
- 此快照首次捕获于
- 2025/11/04 08:32 4 个月前
- 此快照最后确认于
- 2025/11/04 08:32 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e2+2;
int n,m,a,b,num[MAXN][MAXN];
int main(){
scanf("%d%d%d%d",&n,&m,&a,&b);
int L=1,R=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
scanf("%d",&num[i][j]);
R+=num[i][j];
num[i][j]+=num[i-1][j];
}
while(L<R){
int mid=(L+R)/2;
int up=0,cnt_a=0;
for(int down=1;down<=n;down++){
int cnt_b=0,z=0;
for(int r=1;r<=m;r++){
z+=(num[down][r]-num[up][r]);
if(z>=mid){
z=0;
cnt_b++;
}
// printf("mid=%d z=%d up=%d down=%d cnt_b=%d cnt_a=%d\n",mid,z,up,down,cnt_b,cnt_a);
}
if(cnt_b>=b){
up=down;
cnt_a++;
}
}
if(cnt_a>=a) L=mid;
else R=mid-1;
}
printf("%d",L);
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...