旋轉卡殼——凸多邊形的寬度

    凸多邊形的寬度定義為平行切線間的最小距離。 這個定義從寬度這個詞中已經略有體現。 雖然凸多邊形的切線有不同的方向, 並且每個方向上的寬度(通常)是不同的。 但幸運的是, 不是每個方向上都必須被檢測。     我們假設存在一個線段 [a,b], 以及兩條通過 a 和 b 的平行線。 通過繞著這兩個點旋轉這兩條線, 使他們之間的距離遞增或遞減。 特別的, 總存在一個 特定旋轉方向 使得兩條線之間的距離通過旋轉變小。     這個簡單的結論可以被應用於寬度的問題中: 不是所有的方向都需要考慮。

旋轉卡殼——凸多邊形間最小距離

凸多邊形間最小距離給定兩個非串連(比如不相交)的凸多邊形 P 和 Q, 目標是找到擁有最小距離的點對 (p,q) (p 屬於 P 且 q 屬於 Q)。 事實上, 多邊形非串連十分重要, 因為我們所說的多邊形包含其內部。 如果多邊形相交, 那麼最小距離就變得沒有意義了。 然而, 這個問題的另一個版本, 凸多邊形頂點對間最小距離對於相交和非相交的情況都有解存在。 回到我們的主問題: 直觀的, 確定最小距離的點不可能包含在多邊形的內部。 與最大距離問題相似, 我們有如下結論: 兩個凸多邊形 P 和

旋轉卡殼——凸多邊形間最大距離

凸多邊形間最大距離給定兩個凸多邊形 P 和 Q, 目標是需要找到點對 (p,q) (p 屬於 P 且 q 屬於 Q) 使得他們之間的距離最大。 很直觀地,這些點不可能屬於他們各自多邊形的內部。 這個條件事實上與直徑問題非常相似: 兩凸多邊形 P 和 Q 間最大距離由多邊形間的對踵點對確定。 雖然說法一樣, 但是這個定義與給定凸多邊形的對踵點對的不同。 與凸多邊形間的對踵點對本質上的區別在於切線是有向且反向的。 展示了一個例子:  上述結論暗示不單純只是頂點對需要檢測,

旋轉卡殼——凸多邊形最小面積外接矩形

凸多邊形最小面積外接矩形給定一個凸多邊形 P , 面積最小的能裝下 P (就外圍而言)的矩形是怎樣的呢? 從技術上說, 給定一個方向, 能計算出 P 的端點並且構由此造出外接矩形。 但是我們需要測試每個情形來獲得每個矩形來計算最小面積嗎? 謝天謝地, 我們不必那麼幹。 對於多邊形 P 的一個外接矩形存在一條邊與原多邊形的邊共線。 上述結論有力地限制了矩形的可能範圍。 我們不僅不必去檢測所有可能的方向, 而且只需要檢測與多邊形邊數相等數量的矩形。 圖示上述結論: 四條切線(紅色),

POJ 3696 The Luckiest number(08合肥 數論)

轉載請註明出處,謝謝http://blog.csdn.net/acm_cxlove/article/details/7854526       by---cxlove題目:給出一個數n,找出他的一個倍數,而且這個數每一位都是8,找到最小的那個的位元,否則輸出0.http://poj.org/problem?id=3696 其實是個挺有意思的數論,而且代碼難度也不大。但是可惜就是不會~~~~~~囧8888888肯定可以寫成8*(10^k-1)/9=m*n,n是原數字,k是位元。稍微整理下8*(10

旋轉卡殼——凸多邊形最小周長外接矩形

凸多邊形最小周長外接矩形這個問題和最小面積外接矩形相似。 我們的目標是找到一個最小盒子(就周長而言)外接多邊形 P 。 有趣的是通常情況下最小面積的和最小周長的外接矩形是重合的。 有人不禁想問這是不是總成立的。 下面的例子回答了這個問題: 多邊形(灰色的)及其最小面積外接矩形(左邊的)和最小周長外接矩形(右邊的)。  現在, 給定一個方向, 我們可以算出 P 的端點, 以此來確定一個外接矩形。 但是, 就如同面積問題中一樣, 由於有下面的結論, 我們不必檢測每個狀態來獲得擁有最小周長的矩形:

旋轉卡殼——螺旋三角剖分

螺旋三角剖分點集的螺旋三角剖分是基於集合螺旋凸包的三角剖分圖。 凸螺旋線可以通過如下方法構造: 從一個特定的端點開始(比如給定方向上的最小點), 這裡取有最小 x 座標的點。通過那個點構造一條鉛垂線。按照一個給定的方向旋轉線(總保持順時針或者是逆時針方向), 直到線“擊” 出另一個頂點。將兩個點用一條線段串連。重複步驟3和步驟4, 但是總忽略已經擊出的點。 大體上, 這個過程類似於計算凸包的卷包裹演算法, 但是不同在於其迴圈永遠不會停止。 對於一個凸包上有 h 個點的點集, 存在 2h

[專輯]樹狀數組[updating]

一般樹狀數組能做的線段樹都能做,除非卡你空間。。。1、單點更新+區間查詢#define MAXN 100002int a[MAXN];int n;//線段 1~ninline lowbit(int x) { return x&(-x); }int getsum(int x)// 區間查詢,sum[1, x]{int ret = 0;while(x>0)//合并區間{ret += a[x];x-=lowbit(x);}return ret;}void insert(int x,

線性規劃入門

最近好像沒怎麼動這個blog了,不能這麼墮落了...也就是一時興起想寫一下,看不懂別怪我...首先明確一下線性規劃的定義,就是所有約束條件以及目標函數中未知數的次數都是1,因此線性規劃的一個約束條件表示在n維空間上是"平"(自己意會一下吧)的.接著,線性規劃的可行域在n維空間上看起來是"凸"的(因為約束函數是"平"的),我們把這個東西叫做單純形.求解線性規劃的演算法,一般用單形法或者內點法,關於單形法的實現我之前已經搞了一篇文章了,總之實際應用起來還是很快的.好像有一個叫"整流定理"的東西,說的

[網路流]matrix題解

以下的描述中可能會把行和列弄反,請不要過於糾結.[題目描述]    給你2個n*m的矩陣A和B,求一個矩陣C,滿足:Ai,j<=Ci,j<=Bi,j,且C矩陣每行的和的絕對值的最大值與差的最大值最小.[題解]   這道題還是很好想的,只要有一點線性規劃的基礎知識就行了.   沒有的可以看一下我上一篇文章.   顯然,我們先令Di,j=Ci,j+k,其中k是一個充分大的數使得Di,j的下界非負.   然後,我們二分這個ans,原問題變為:求一個矩陣D,滿足:Li,j<=Di,j&

hdu 4614 Vases and Flowers

周末UA做了這場多校的vjudge版本。我去陪爸媽去山溝溝轉了,回來聽說有個這個線段樹,想敲敲。多年不做線段樹,好噁心><struct Tnode{// 一維線段樹 int l,r; int cover; int lid, rid; int sum; int len() { return r - l;} int mid() { return MID(l,r);} bool in(int ll,int rr) { return l >=

尾碼數組實現

先貼這裡,免得忘了program sa;type int=longint;var i,j,k,m,n,l,max:int; a,b,c,d,x,r:array[0..1000000]of int; ch:char;procedure main;begin l:=1; repeat for i:=0 to max do begin b[i]:=0;c[i]:=0;end;

標記永久化的線段樹

      本文純屬自娛自樂.      前些日子考了一道叫classroom的題目,大意是這樣的:給你一個序列a,每次將l到r的元素-k,問你哪次操作後會開始出現負的元素.      正解是二分+差分.很多人打的帶標記的線段樹.我考場上打的二分,後來有人說線段樹常數太大,我告訴他們標記不下放可以提高速度,戰神則堅持認為標記一定要下放,於是就有了這篇蛋疼的文章.      直接貼代碼,最裸的線段樹.我現在寫的線段樹跟以前的有了很大的變化,也許是因為打多了吧.Code:program

POJ 1830 高斯消元

http://poj.org/problem?id=1830依舊高斯消元,不解釋方程建立很簡單,如果有解,解的個數便是2^(自由變元個數),因為每個變元都有兩種選擇/*ID:cxlovePROB:poj 1830 開關問題DATA:2012.3.30HINT:高斯消元*/#include<iostream>#include<cstdio>#include<cstring>using namespace std;int s[35],e[35],a[35][35]

[orz]一道題的神做法….

題目描述:Squirrel Liss lived in a forest peacefully, but unexpected trouble happens. Stones fall from a mountain. Initially Squirrel Liss occupies an interval [0, 1]. Next, n stones will fall and Liss will escape from the stones. The stones are numbered

POJ 1811 Miller_Rabin+Pollard_Rho

赤裸裸的模板題吧一個大數,判斷是否是素數,如果是合數輸出最小的因子。大數的素數測試,隨機演算法Miller_Rabin測試,前提是瞭解費馬小定理。不過對於非平方根處有疑惑,還得請教大牛至於輸出最小因子,運用Pollard_Rho即可,也算是隨機演算法,怎麼看都是要靠RP的,至於xi=xi-1^2+c ,這個c的取法一直不理解,我用的是240,有的人是使用隨機數,網上有大牛說12323速度最快?/*ID:cxlovePROB:poj

最小覆蓋圓

/*==================================================*/| 求最小覆蓋圓| CALL: 最小圓 = minC(Point *p,int n);/*==================================================*/struct Point{double x,y;};struct Circle{Point c;double r;};double dist(Point a,Point b){return

旋轉卡殼——翻譯說明文檔

     前一段時間看了一位國外大牛的網站,是關於旋轉卡殼技術的,內容很不錯,就嘗試著翻譯一下。     關於旋轉卡殼技術,最早是在劉汝佳、黃亮的《演算法藝術與資訊學競賽》上看到的,是計算幾何相關的技術,開始覺得很神奇,因為其對於凸多邊形的問題給出了很好的解決方案,於是上網查了一下,就發現了這份資料。     通過個人的學習研究,我發現其可以用於解決大量的多邊形的問題,而非僅僅局限於原來瞭解的基於凸包的一些具體問題,十分具有研究價值,因此發出來與大家共用一下。     由於個人水平有限,某些地方

POJ 3252 Round Numbers(組合計數)

轉載請註明出處,謝謝 http://blog.csdn.net/ACM_cxlove?viewmode=contents          

旋轉卡殼——凸多邊形直徑

凸多邊形直徑我們將一個多邊形上任意兩點間的距離的最大值定義為多邊形的直徑。 確定這個直徑的點對數可能多於一對。 事實上, 對於擁有 n 個頂點的多邊形, 就可能有 n 對“直徑點對”存在。  一個多邊形直徑的簡單例子如左圖所示。 直徑點對在圖中顯示為被平行線穿過的黑點 (紅色的一對平行線). 直徑用淺藍色高亮顯示。顯然, 確定一個凸多邊形 P 直徑的點對不可能在多邊形 P 內部。 故搜尋應該在邊界上進行。 事實上, 由於直徑是由多邊形的平行切線的最遠距離決定的, 所以我們只需要查詢對踵點。

總頁數: 61357 1 .... 19664 19665 19666 19667 19668 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.