Vijos 1055 奶牛浴場 極大化思想

2021-08-08 08:22:04 字數 1349 閱讀 5507

題目鏈結 描述

由於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...