根據王知昆的**裡說的,解決這種問題通常有兩種方法。這裡我用的第二種方法。
什麼都不懂的,先看**
具體的沒啥好說的,根據**裡說的實現以下就是了,詳細注釋看code
view code
1 #include2 #include3 #include4 #include5 #include6
using
namespace
std;78
intn,m;
9int v[5010][5010],h[5010],l[5010],r[5010
];10
int x[5010],y[5010
],lenx,leny;
11int a[5010],b[5010
];12
13int findx(int
c)1427}
2829
int findy(int
c)3043}
4445
intmain()
4659
//******************************
//離散化
60 x[lenx++]=0;y[leny++]=0
;61 x[lenx++]=n;y[leny++]=m;
62 sort(x,x+lenx);
63 sort(y,y+leny);
64for(j=1,i=1;i)
6569 lenx=j;
70for(j=1,i=1;i)
7175 leny=j;
76//
*******************************
//77 memset(v,0,sizeof
(v));
78for(i=0;i)
7984
int lm,rm,ans=0
,temp;
85for(i=0;i)
8689
for(i=1;i)
90100
else
//如果上乙個點是障礙點
101107
}108 rm=m;
109for(j=leny-1;j>=0;j--)
110119
}120
for(i=1;i//
計算相鄰y座標之間的面積
121126 printf("
%d\n
",ans);
127}
128return0;
129 }
P1578 奶牛浴場 有障礙點的最大子矩形
這題咕咕了很久終於寫了 qwq 顯然能成為答案的矩形的邊界一定有障礙點或者與大矩形邊界重合。細節見 及注釋 include include include define ull unsigned long long define ll long long define r register int ...
最大子矩形問題
大佬部落格講解 o s 2 s是障礙點的個數。演算法思想 以每個障礙點作為極大子矩形的左邊界和右邊界,列舉所有的極大子矩形,再找出最大的子矩形,最後還要算一下遺漏的以範圍內的左邊界和右邊界為極大子矩形的左右邊框的矩形大小。p1578 奶牛浴場 題目描述 由於john建造了牛場圍欄,激起了奶牛的憤怒,...
最大子矩形問題模板
用極大化思想解決最大子矩陣問題 演算法1 時間複雜度o s 2 s為障礙物個數 題目 奶牛浴場 include include include include include include define il inline define rg register define ll long lon...