52分求Hack
  • 板块P1736 创意吃鱼法
  • 楼主WsW_花逝爆零人
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/7/22 21:53
  • 上次更新2024/7/22 23:14:36
查看原帖
52分求Hack
349824
WsW_花逝爆零人楼主2024/7/22 21:53
#include<bits/stdc++.h>
using namespace std;
int n,m;
bool mp[2505][2505];
//int sum[2505][2505];
int dp[2505][2505];
int ans;

void work(){
	memset(dp,0,sizeof(dp));
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(!mp[i][j])continue;
			if(mp[i-1][j-1]){
				int x=i-dp[i-1][j-1],y=j-dp[i-1][j-1];
				for(;mp[i][y]||mp[x][j];x++,y++);
				dp[i][j]=i-x+1;
			}
			else dp[i][j]=1;
			if(dp[i][j]>ans){
				ans=dp[i][j];
//				cout<<i-dp[i][j]+1<<' '<<j-dp[i][j]+1<<"->"<<i<<' '<<j<<'\n';
			}
		}
	}
}

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>mp[i][j];
//			sum[i][j]=mp[i][j]+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
		}
	}
	work();
//	cout<<"&&&\n";
	for(int i=1;i<=n;i++){
		for(int j=1;j<=(m>>1);j++){
			swap(mp[i][j],mp[i][m-j+1]);
		}
	}
	work();
	cout<<ans;
	return 0;
}
2024/7/22 21:53
加载中...