關於多邊形內點數問題的一些變形

2022-05-05 21:42:11 字數 1173 閱讀 7842

最近兩次比賽出現兩道相同型別的題,有人十幾分鐘就ac了,而有人卡了倆小時。。。反思。。

先說hdu4353這道題,題意是要求乙個從n個點1裡邊畫出乙個多邊形來,然後給出m個點2。讓這個(多邊形的面積/多邊形內點2的個數)最小。

描述很複雜。。。但是仔細想想會發現,多邊形的點越多,面積也就越大,所以,這裡只能畫三個點,也就是乙個三角形。至於怎麼求點2的個數,這是很有必要總結的,祭奠我那苦逼的倆小時吧。。。。

先看乙個圖: 

這不是立體圖,僅僅是個平面圖。。。

假設sum[i][j]表示i,j這條線上方這塊區域的點的數目

可以看到三角形內點2的數目 = sum[i][j] + sum[j][k] - sum[i][k];

其實更通用一點就是: abs(sum[i][k] - sum[i][j] - sum[j][k]);

既然統計出這些點數來,這個問題基本就解決了。

hdu 4353的**:

view code

const

int n = 210

;const

int m = 511

;struct

point

};point a[n], b[m];

intsum[n][n];

intn, m;

inline

int det(int x1, int y1, int x2, int

y2)

inline

intcross(point a, point b, point c)

intmain() }}

}ans = -1

;

for(i = 0; i < n; ++i) }}

if(ans == -1) printf("

case #%d: -1\n

", ++cas);

else printf("

case #%d: %.6lf\n

", ++cas, ans);

}return0;

}

還有乙個就是多校9上的1001題(hdu 4380)。比上面這個題更直白,需要統計三角形內的點數是不是奇數就可以。。。

多邊形問題( 判斷乙個點在不在多邊形內)

試題一 災區已經非常困難,災民需要帳篷 衣物 食品和血漿。可通往災區的道路到處都是塌方,70 以上的路面損壞,橋梁全部被毀。中國空軍立即啟動應急預案,展開史上最大強度非作戰空運行動,準備向災區空投急需物資。由於餘震不斷,天氣惡劣,怎樣知道空投的物資是否落在某災區的區域內呢?經過空中觀測,某災區為一凸...

點在多邊形內 一種尋找多邊形視覺中心的新演算法

在乙個多邊形上放置文字標籤或工具提示的最佳位置通常位於其 視覺中心 的某個位置,即多邊形內部的乙個點,周圍有盡可能多的空間。計算這樣乙個中心首先想到的是多邊形質心。你可以用乙個簡單快速的公式計算多邊形中心,但如果形狀是凹的或有乙個洞,點可以落在形狀外面。不幸的是,計算不可訪問性的極點既複雜又緩慢。公...

2 10 建立多邊形表面模型的一些提示

多邊形的方向 環繞 保持一致。從外側觀察表面時,確保組成這個表面的所有多邊形都具有相同的方向 都為順時針或都為逆時針 一致的方向對於多邊形剔除和雙面光照是極為重要的。對表面進行細分時,要密切注意哪些非三角形的多邊形,確保多邊形所有頂點位於同乙個平面上。具有3個頂點的三角形能夠保證位於同乙個平面上,而...