201800628模擬賽T2 最大土地面積

2022-05-13 18:13:56 字數 1367 閱讀 8023

在某塊平面土地上有n個點,你可以選擇其中的任意四個點,將這片土地圍起來,當然,你希望這四個點圍成的多邊形面積最大。

輸入格式:

第1行乙個正整數n,接下來n行,每行2個數x,y,表示該點的橫座標和縱座標。

輸出格式:

最大的多邊形面積,答案精確到小數點後3位。

輸入樣例#1:

5

0 01 0

1 10 1

0.5 0.5

輸出樣例#1:
1.000

資料範圍\(n\le 2000\),\(|x|,|y|\le 100000\)。

首先想到的當然是\(n^4\)大力列舉所有點,20分。

考慮優化,發現我們可以列舉一條邊,再以該邊為對角線求出左右兩邊的三角形最大值(我的方法是用叉積求出有向面積,找出最大值與最小值,減一下即可)30分。

考慮繼續優化,我們發現四邊形的四個頂點一定在凸包上,所以求先求凸包再列舉,50分。

五十分核心**大致如下:

tubao();

double ans = 0.;

for(int i = 1; i <= m; ++i)

if(minn < 0. && maxx > 0.)

ans = max(maxx - minn, ans); }}

printf("%.3f", ans / 2.);

我們又能發現對於一條邊,如果它在凸包上且作為對角線,我們發現凸包上的一側的點到該線段的距離是乙個凸函式,所以我們考慮三分,複雜度\(o(n^2\log n)\),聽說卡一下常能過。

綜上,我們發現我們整理已經整理出了一些性質,雖然都非常顯而易見,但我們還沒有把它們結合起來。

首先,凸包是肯定要求的。

受到之前的啟發,我們仍然考慮列舉一條對角線,設現在列舉到的頂點為\(i, j\)。

設另兩個點為\(a, b\)。我們先來看\(b\)。

首先,我們不難得出如果確定\(i,j\),那\(b\)到\(ij\)的距離一定是單峰的。那如果\(j\)開始逆時針轉動,峰顯然也會逆時針轉動(可以想象是整個凸包轉過來了)。

於是我們讓\(b\)逆時針跑就行了。

那\(a\)也同理。

我們發現\(b\)對每個點只掃了一遍,對於每個\(i\)複雜度\(o(n)\),同理\(j,b\)都是,所以總複雜度\(o(n^2)\)。

核心**如下:

tubao();

double ans = 0.;

for(int i = 1; i <= m; ++i)

}printf("%.3f", ans / 2.);

模擬 2018 9洛谷月賽T2

傳送門 一道模擬題?根據給出的條件可以分類討論列出關於k的不等式,然後求區間的交 但是求交不好求,可以轉化成求補集的並,還是挺常見的套路 具體實現還是很有技巧的,可以用結構體存這個點和它的型別 左端點or右端點 然後通過排序求並,具體細節看注釋 include include include inc...

20161005 NOIP 模擬賽 T2 解題報告

beautiful 2.1 題目描述 乙個長度為 n 的序列,對於每個位置 i 的數 ai 都有乙個優美值,其定義是 找到序列中最 長的一段 l,r 滿足 l i r,且 l,r 中位數為 ai 我們比較序列中兩個位置的數的大小時,以數值為第一關鍵字,下標為第二關鍵字比較。這樣的話 l,r 的長度只...

20161003 NOIP 模擬賽 T2 解題報告

weed duyege的電腦上面已經長草了,經過辨認上面有金坷垃的痕跡。為了查出真相,duyege 準備修好電腦之後再進行一次金坷垃的模擬實驗。電腦上面有若干層金坷垃,每次只能在上面撒上一層高度為 vi 的金坷垃,或者除掉最 新 vi 層 不是量 撒的金坷垃。如果上面只留有不足 vi 層金坷垃,那麼...