悬线法--解决图内最大矩形类问题

本文介绍了如何使用悬线法在有限制条件的区域内找到最大矩形,涉及棋盘制作、巨牛牧场等场景。通过预处理每个点的移动范围并结合限制条件,可以找到最优解。提供了玉蟾宫问题的解决方案。
摘要由CSDN通过智能技术生成

有这样一类题,让你在一个区域范围内找到最大矩形(面积/边长)

eg. 棋盘制作 巨大的牛棚 玉蟾宫

  • 这类问题都是在一个有限制条件的区域内取矩形
  • 通用“悬线法” 解决
悬线法
  • 顾名思义,假设图中有一条平行于y轴的线,线上的某一段点能左右移动的范围+这段线的长度=一个矩阵的面积
  • 因此我们可以预处理出每个点左右移动的范围,最后合并范围相同的点寻找答案
  • 其中限制条件在每次状态转移是加上

玉蟾宫代码↓

#include <bits/stdc++.h>
#define il inline
#define re register
using namespace std;
int n, m, ans;
int l[1010][1010], r[1010][1010], top[1010][1010];
char ch[1010][1010];
il char read() {
   
	char op = getchar();
	while(op != 'F'&&op != 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值