題目鏈結 描述
由於john建造了牛場圍欄,激起了奶牛的憤怒,奶牛的產奶量急劇減少。為了討好奶牛,john決定在牛場中建造乙個大型浴場。但是john的奶牛有乙個奇怪的習慣,每頭奶牛都必須在牛場中的乙個固定的位置產奶,而奶牛顯然不能在浴場中產奶,於是,john希望所建造的浴場不覆蓋這些產奶點。這回,他又要求助於clevow了。你還能幫助clevow嗎?
john的牛場和規劃的浴場都是矩形。浴場要完全位於牛場之內,並且浴場的輪廓要與牛場的輪廓平行或者重合。浴場不能覆蓋任何產奶點,但是產奶點可以位於浴場的輪廓上。
clevow當然希望浴場的面積盡可能大了,所以你的任務就是幫她計算浴場的最大面積。
格式輸入格式
輸入檔案的第一行包含兩個整數l和w,分別表示牛場的長和寬。檔案的第二行包含乙個整數n,表示產奶點的數量。以下n行每行包含兩個整數x和y,表示乙個產奶點的座標。所有產奶點都位於牛場內,即:0<=x<=l,0<=y<=w。
輸出格式
輸出檔案僅一行,包含乙個整數s,表示浴場的最大面積。
樣例輸入1
10 10
4 1 1
9 1
1 9
9 9
樣例輸出1
80提示
0<=n<=5000
1<=l,w<=30000
** winter camp 2002
見王知昆《**用極大化思想解決最大子矩形問題》
這題一眼看去和玉蟾宮這題差不多,但一看資料範圍就**了,不能用簡單的懸線法來實現
我們可以用第一種演算法,列舉所有關鍵點,不斷掃瞄更新an
s ,具體細節**中已給出,不做贅述
時間複雜度o(
n2)
**如下:
#include
#include
#include
#define n 5020
using
namespace
std;
inline
int read()
while(isdigit(c))
return x*f;
}struct point
}a[n];
int n,m,k,ans,up,down;
inline
bool cmpp(point a,point b)//處理兩端在左右邊界的舉行
inline
void getans1()
if(a[j].y>a[i].y)down=min(down,a[j].y);
if(a[j].yinline
void getans2()
int main()
18 03 20 vijos1055奶牛浴場
由於john建造了牛場圍欄,激起了奶牛的憤怒,奶牛的產奶量急劇減少。為了討好奶牛,john決定在牛場中建造乙個大型浴場。但是john的奶牛有乙個奇怪的習慣,每頭奶牛都必須在牛場中的乙個固定的位置產奶,而奶牛顯然不能在浴場中產奶,於是,john希望所建造的浴場不覆蓋這些產奶點。這回,他又要求助於cle...
Vijos1055(極大子矩陣)
題目鏈結 分析 用極大化思想解決最大子矩陣問題 演算法二的複雜度是n m,顯然這道題是不能承受的 那麼我們只能看一下演算法一了 演算法一的 量明顯多於演算法二 主要分成兩大部分 首先按照x座標排序 第一面掃瞄我們從左到右,miny表示最大向下擴充套件到的下邊界,maxy表示最大向上擴充套件到的上邊界...
WC2002 奶牛浴場
由於john建造了牛場圍欄,激起了奶牛的憤怒,奶牛的產奶量急劇減少。為了討好奶牛,john決定在牛場中建造乙個大型浴場。但是john的奶牛有乙個奇怪的習慣,每頭奶牛都必須在牛場中的乙個固定的位置產奶,而奶牛顯然不能在浴場中產奶,於是,john希望所建造的浴場不覆蓋這些產奶點。這回,他又要求助於cle...