(可以在弊校oj提交)
輸入乙個可能錯誤的三角剖分(n階凸多邊形,內部n - 3條對角線)。
每條邊的邊權是三種顏色之一。
校驗1:這是乙個正確的三角剖分
校驗2:這個三角剖分的每個單元三角形都是異色三角形。
如果三角剖分正確,內部每個單元三角形的內角,都對應一條邊。
(反過來,一條對角線對應兩個內角,一條輪廓邊對應乙個內角)
如果存在連線出錯了,必定會產生內部多邊形不是三角形的情況。這樣內角對應的邊會找不到。
如果每個三角形都是異色三角形,那麼每個內角的兩個夾角邊異色。
所以只要列舉內角,檢查每個內角,對邊是否存在,夾角邊是否異色。
把這個幾何圖形建成無向圖圖論模型,我們希望每個點的鄰接表中的編號都是順時針或者逆時針的,那麼每次列舉鄰邊就代表這個圖形中的內角。
考慮在鄰接表排序的時候,把當前編號作為最小值,重新對映所有編號(取模)。這樣排序以後就可以自然地從n - 1 列舉下乙個是 0 1 2
以下是逆時針的排序做法:
不理解lambda,可以寫個比較函式,把i作為全域性變數傳遞。
for
(int i =
0; i < n;
++i));
}
const
int maxn =
2e5+59;
using pii = pair<
int,
int>
;int n;
char s[maxn]
;vector g[maxn]
;set has;
void
solve
(int kaseid =-1
)for
(int i =
0; i < n;
++i)
for(
int i =
0; i < n;
++i));
}for
(int u =
0; check1 && u < n;
++u))==
0&&has.
count
(pii)==
0)if(ci == cj)}}
if(!check1)
elseif(
!check2)
else
}
Delaunay(德勞內)三角剖分演算法
在數學和計算幾何領域,平面上的點集p的德勞內三角化是一種三角剖分dt p 使得在p中沒有點嚴格處於 dt p 中任意乙個三角形外接圓的內部。delaunay 三角化最大化了此三角剖分中三角形的最小角,換句話,此演算法盡量避免出現 極瘦 的三角形。此演算法命名 於鮑里斯 德勞內,以紀念他自1934年在...
三角剖分詳解
三角剖分定義 定義 三角剖分 假設v是二維實數域上的有限點集,邊e是由點集中的點作為端點構成的封閉線段,e為e的集合。那麼該點集v的乙個三角剖分t v,e 是乙個平面圖g,該平面圖滿足條件 1.除了端點,平面圖中的邊不包含點集中的任何點。2.沒有相交邊。3.平面圖中所有的面都是三角面,且所有三角面的...
優美三角剖分
優美三角剖分 pas c cpp 題目描述 小x同學為了搞好和小c同學的關係,特意尋找了一些優美的影象作為禮物。這是一些由無窮無盡三角形組成的極為優美的圖形,小x同學很想實現這些極富美感的圖形,但是作為一名初賽都未過的偽退役選手,他水平有限,於是這個艱鉅的任務就落在你們身上了。由於好心的出題人,資料...