【算法雜談】計算幾何題目推薦

//第一期


計算幾何題的特點與做題要領:
1.大部分不會很難,少部分題目思路很巧妙
2.做計算幾何題目,模板很重要,模板必須高度可靠。
3.要注意代碼的組織,因爲計算幾何的題目很容易上兩百行代碼,裏面大部分是模板。如果代碼一片混亂,那麼會嚴重影響做題正確率。
4.注意精度控制。
5.能用整數的地方儘量用整數,要想到擴大數據的方法(擴大一倍,或擴大sqrt2)。因爲整數不用考慮浮點誤差,而且運算比浮點快。

一。點,線,面,形基本關係,點積叉積的理解

POJ 2318 TOYS(推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2318
POJ 2398 Toy Storage(推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2398
一個矩形,有被若干直線分成N個格子,給出一個點的座標,問你該點位於哪個點中。
知識點:其實就是點在凸四邊形內的判斷,若利用叉積的性質,可以二分求解。

POJ 3304 Segments
http://acm.pku.edu.cn/JudgeOnline/problem?id=3304
知識點:線段與直線相交,注意枚舉時重合點的處理

POJ 1269 Intersecting Lines 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1269
知識點:直線相交判斷,求相交交點

POJ 1556 The Doors (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1556
知識點:簡單圖論+簡單計算幾何,先求線段相交,然後再用Dij求最短路。

POJ 2653 Pick-up sticks 
http://acm.pku.edu.cn/JudgeOnline/problem?id=2653
知識點:還是線段相交判斷

POJ 1066 Treasure Hunt 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1066
知識點:線段相交判斷,不過必須先理解“走最少的門”是怎麼一回事。

POJ 1410 Intersection 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1410
知識點:線段與矩形相交。正確理解題意中相交的定義。
詳見:http://hi.baidu.com/novosbirsk/blog/item/68c682c67e8d1f1d9d163df0.html

POJ 1696 Space Ant (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1696
德黑蘭賽區的好題目。需要理解點積叉積的性質

POJ 3347 Kadj Squares 
http://acm.pku.edu.cn/JudgeOnline/problem?id=3347
本人的方法極度猥瑣。複雜的線段相交問題。這個題目是計算幾何的擴大數據運算的典型應用,擴大根號2倍之後就避免了小數。

POJ 2826 An Easy Problem?! (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2826
問:兩條直線組成一個圖形,能容納多少雨水。很不簡單的Easy Problem,要考慮所有情況。你不看discuss看看能否AC。(本人基本不能)提示一下,水是從天空垂直落下的。

POJ 1039 Pipe 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1039
又是線段與直線相交的判斷,再加上枚舉的思想即可。

POJ 3449 Geometric Shapes 
http://acm.pku.edu.cn/JudgeOnline/problem?id=3449
判斷幾何體是否相交,不過輸入輸出很噁心。
此外,還有一個知識點,就是給出一個正方形(邊不與軸平行)的兩個對角線上的頂點,需要你求出另外兩個點。必須掌握其方法。

POJ 1584 A Round Peg in a Ground Hole 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1584
知識點:點到直線距離,圓與多邊形相交,多邊形是否爲凸

POJ 2074 Line of Sight (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=2074
與視線問題的解法,關鍵是求過兩點的直線方程,以及直線與線段的交點。數據有一個trick,要小心。

二。凸包問題

POJ 1113 Wall 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1113
知識點:赤裸裸的凸包問題,凸包周長加上圓周。

POJ 2007 Scrambled Polygon 
http://acm.pku.edu.cn/JudgeOnline/problem?id=2007
知識點:凸包,按極角序輸出方案

POJ 1873 The Fortified Forest (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1873
World Final的水題,先求凸包,然後再搜索。由於規模不大,可以使用位運算枚舉。
詳見:http://hi.baidu.com/novosbirsk/blog/item/333abd54c7f22c52574e0067.html

POJ 1228 Grandpa's Estate (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1228
求凸包頂點數目,很多人求凸包的模板是會多出點的,雖然求面積時能得到正確答案,但是在這個題目就會出問題。此外,還要正確理解凸包的性質。

POJ 3348 Cows 
http://acm.pku.edu.cn/JudgeOnline/problem?id=3348
凸包面積計算

三。面積問題,公式問題

POJ 1654 Area 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1654
知識點:利用有向面積(叉積)計算多邊形面積

POJ 1265 Area 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1265
POJ 2954 Triangle 
http://acm.pku.edu.cn/JudgeOnline/problem?id=2954
Pick公式的應用,多邊形與整點的關係。(存在一個GCD的關係)

四。半平面交

半平面交的主要應用是判斷多邊形是否存在覈,還可以解決一些與線性方程組可行區域相關的問題(就是高中時的那些)。

POJ 3335 Rotating Scoreboard
http://acm.pku.edu.cn/JudgeOnline/problem?id=3335
POJ 3130 How I Mathematician Wonder What You Are! 
http://acm.pku.edu.cn/JudgeOnline/problem?id=3130
POJ 1474 Video Surveillance
http://acm.pku.edu.cn/JudgeOnline/problem?id=1474
知識點:半平面交求多邊形的核,存在性判斷

POJ 1279 Art Gallery 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1279
半平面交求多邊形的核,求核的面積

POJ 3525 Most Distant Point from the Sea (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3525
給出一個多邊形,求裏面的一個點,其距離離多邊形的邊界最遠,也就是多邊形中最大半徑圓。
可以使用半平面交+二分法解。二分這個距離,邊向內逼近,直到達到精度。


POJ 3384 Feng Shui (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3384
半平面交實際應用,用兩個圓覆蓋一個多邊形,問最多能覆蓋多邊形的面積。
解法:用半平面交將多邊形的每條邊一起向“內”推進R,得到新的多邊形,然後求多邊形的最遠兩點。


POJ 1755 Triathlon (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1755
半平面交判斷不等式是否有解。注意不等式在轉化時正負號的選擇,這直接影響到半平面交的方向。

POJ 2540 Hotter Colder 
http://acm.pku.edu.cn/JudgeOnline/problem?id=2540
半平面交求線性規劃可行區域的面積。

POJ 2451 Uyuw's Concert
http://acm.pku.edu.cn/JudgeOnline/problem?id=2451
Zzy專爲他那篇nlogn算法解決半平面交問題的論文而出的題目。

五。計算幾何背景,實際上解題的關鍵是其他問題(數據結構、組合數學,或者是枚舉思想)
若干道經典的離散化+掃描線的題目,ACM選手必做題目

POJ 1151 Atlantis (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1151
POJ 1389 Area of Simple Polygons
http://acm.pku.edu.cn/JudgeOnline/problem?id=1389
矩形離散化,線段樹處理,矩形面積求交

POJ 1177 Picture (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1177
矩形離散化,線段樹處理,矩形交的周長,這個題目的數據比較強。線段樹必須高效。 

POJ 3565 Ants (推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3565
計算幾何中的調整思想,有點像排序。要用到線段相交的判斷。
詳見:http://hi.baidu.com/novosbirsk/blog/item/fb668cf0f362bec47931aae2.html


POJ 3695 Rectangles    
http://acm.pku.edu.cn/JudgeOnline/problem?id=3695
又是矩形交的面積,但是由於是多次查詢,而且矩形不多,使用組合數學中的容斥原理解決之最適合。線段樹是通法,但是除了線段樹,還有其他可行的方法。

POJ 2002 Squares    
http://acm.pku.edu.cn/JudgeOnline/problem?id=2002
枚舉思想,求平面上若干個點最多能組成多少個正方形,點的Hash

POJ 1434 Fill the Cisterns!(推薦)
http://acm.pku.edu.cn/JudgeOnline/problem?id=1434
一開始發昏了,準備弄個線段樹。其實只是個簡單的二分。


六。隨機算法
POJ 2420 A Star not a Tree? 
http://acm.pku.edu.cn/JudgeOnline/problem?id=2420
多邊形的費馬點。所謂費馬點,就是多邊形中一個點P,該點到其他點的距離之和最短。四邊形以上的多邊形沒有公式求費馬點,因此可以使用隨機化變步長貪心法。
詳見:http://hi.baidu.com/novosbirsk/blog/item/75983f138499f825dd54019b.html

七。解析幾何
這種題目本人不擅長,所以做得不多,模板很重要。當然,熟練運用叉積、點積的性質還是很有用的。
POJ 1375 Intervals 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1375
知識點:過圓外一點求與圓的切線

POJ 1329 Circle Through Three Points    
http://acm.pku.edu.cn/JudgeOnline/problem?id=1329
求三角形外接圓

POJ 2354 Titanic
http://acm.pku.edu.cn/JudgeOnline/problem?id=2354
求球面上兩個點的距離,而且給的是地理經緯座標。

POJ 1106 Transmitters
http://acm.pku.edu.cn/JudgeOnline/problem?id=1106
角度排序,知道斜率求角度,使用atan函數。

POJ 1673 EXOCENTER OF A TRIANGLE
http://acm.pku.edu.cn/JudgeOnline/problem?id=1673
可以轉化爲三角形的垂心問題。

八。旋轉卡殼

POJ 2187 Beauty Contest 
http://acm.pku.edu.cn/JudgeOnline/problem?id=2187
凸包求最遠點對。可以暴力枚舉,也可以使用旋轉卡殼。

POJ 3608 Bridge Across Islands(難)
http://acm.pku.edu.cn/JudgeOnline/problem?id=3608
兩個凸包的最近距離。本人的卡殼始終WA。鬱悶。

九。其他問題
POJ 1981 Circle and Points 
http://acm.pku.edu.cn/JudgeOnline/problem?id=1981
求單位圓最多能覆蓋平面上多少個點

 

 

 

//第二期

 

下面的OJ之中,CII是指ACM-ICPC Live Archive ,網址是:
http://cii-judge.baylor.edu/

其他OJ的地址大家都熟知了,因此不再提供。

一。基礎題目
1.1 有固定算法的題目

A, 最近點對問題
最近點對問題的算法基於掃描線算法。
ZOJ 2107 Quoit Design 典型最近點對問題
POJ 3714 Raid 變種最近點對問題

B,最小包圍圓
最小包圍圓的算法是一種增量算法,期望是O(n)。
ZOJ 1450 Minimal Circle 
HDU 3007 Buried memory 

C,旋轉卡殼
POJ 3608 Bridge Across Islands 旋轉卡殼解兩凸包最小距離
POJ 2079 Triangle 旋轉卡殼計算平面點集最大三角形

1.2 比較簡單的題目
HDU 3264 Open-air shopping malls ,圓面積相交問題,如果用二分法做的話不難
CII 3000 Tree-Lined Streets,幾何+貪心 
CII 4676 Geometry Problem,模板題 
HDU 3272 Mission Impossible,枚舉+鏡面反射思想
POJ 3334 Connected Gheeves,二分答案,面積判定
POJ 1819 Disks,模擬一下 
CII 3905 Meteor,貌似還是比較簡單
ZOJ 2589 Circles,平面圖的歐拉定理,圓的相交
POJ 2194 Stacking Cylinders,向量旋轉


二。經典算法

2.1 三角剖分
三角剖分這個東西貌似去年流行了一下,高校聯賽時某U連續出了兩次。實際上對多邊形進行三角剖分是一個很常見的算法思想,因爲三角形是一個比較簡單的凸多邊形,可以對兩個三角形比較容易地求公共面積,這也是三角剖分最常見的用途。對這個算法進行擴展,就可以求兩個簡單多邊形的面積交了。主要是理解有向面積的概念。

第一類是圓與三角形的相交,主要做法是分情況討論。
POJ 3675 Telescope 三角形剖分,圓與三角形的交
POJ 2986 A Triangle and a Circle 三角形剖分,圓與三角形的交
ZOJ 2675 Little Mammoth 三角形剖分,圓與三角形的交

第二類是多邊形與多邊形相交。
HDU 3060 Area2 簡單多邊形面積並,三角剖分

三角形剖分的另一種變種是梯形剖分,應用起來稍有侷限性,但是比三角形剖分好寫。
POJ 3148 ASCII Art 多邊形梯形剖分,半平面交

多邊形的重心問題,也是三角形剖分的應用:
CII 4426 Blast the Enemy!

2.2 極角排序
顧名思義,極角排序一般就是有一個圓心的問題,將平面上各個點按照與圓心極角進行排序。然後就可以在線性掃描之中解決一些統計問題。不過這類問題就稍稍超出計算幾何範疇了。

UVA 11696 Beacons 頗爲經典的極角排序的統計問題,記得darkgt大牛有一篇文章提到這個題目。
CII 4064 Magnetic Train Tracks,極角排序的統計問題,補集思想。
UVA 11704 Caper pizza
POJ 2280 Amphiphilic Carbon Molecules,極角排序相當巧妙地解決了這個問題。


2.3 掃描線算法
掃描線算法,需要使用到平衡樹輔助,寫起來比較複雜(對於本菜而言)。關於平衡樹,我建議是直接使用STL的set或map。所以你需要掌握一些C++的知識,才能夠看懂一份使用了map與set的代碼。當年學習OI牛的代碼我看得很糾結。不過只要理解了“事件點”這一個概念後就比較好辦了。

HDU 3124 Moonmist 二分+掃描線。最近圓對,不存在改編最近點對的方法。不過當時數據弱,很多人亂搞過了
POJ 2927 Coneology 平衡樹+掃描線,與上題類似。

下面兩個題目都是關於多邊形的掃描線算法,關於平面上許多凸多邊形套了多少層的問題。
CII 4125 Painter ,這個是Final題,比較簡單,是判斷三角形嵌套層數的。
UVA 11759 IBM Fencing,上題是三角形,這題是多邊形,稍稍難了一點。不過理解好掃描線算法的話應該沒有問題。


2.4 其他題目
POJ 3528 Ultimate Weapon,模板化的三維凸包。知道幾個三維有向體積的概念即可比較容易理解三維凸包的算法。三維凸包算法又是一種增量算法。


三。不確定算法/極值問題
POJ 3301 Texas Trip ,算是一種模擬退火求極值的問題,通過平面旋轉找到最佳答案。
SPOJ 4409 Circle vs Triangle(AREA1),也是模擬退火
UVA 11562 Hard Evidence,應用三分極值法求極值。

四。傳統幾何、公式題
UVA有一個名叫Shahriar Manzoor喜歡出這些題目,喜歡這類題目的同志可以研究一本名叫《近代歐式幾何學》的書。不過這些題目一般中學幾何知識能夠解決。
CII 4413 Triangle Hazard,梅涅勞斯定理,想不到SCNU校賽出到了
UVA 11524 InCricle,三角形內切圓性質聯立海倫公式
CII 4714 In-circles Again,還是公式推導
POJ 2208 Pyramids,歐拉四面體公式

五。幾何結合其他算法,麻煩題

HDU 2297 Run,百度杯的題目,利用到了zzy的半平面交的極角排序思想。
CII 4448 Conduit Packing,問一個大圓能否放下四個小圓。頗爲變態的Final題,算法都很基礎,就是二分一個答案,枚舉兩個已知圓,求與已知的兩圓公切的第三個圓,枚舉放置的位置……關鍵是不好想。
CII 4510 Slalom 幾何+最短路
UVA 11422 Escaping from Fractal Bacterium ,麻煩題,主要還是向量旋轉。
HDU 3228 Island Explorer,利用了最小生成樹的性質。
CII 4499 Camera in the Museum,有關圓形處理的,很不錯的題目。
CII 2395 Jacquard Circuits,Pick公式的應用
POJ 3747 Scout YYF II,又是一個幾何問題,需要猜想一下。
POJ 3336 ACM Underground,幾何預處理,並查集
CII 4428 Solar Eclipse,也是不錯的題目,涉及圓的問題
CII 4206 Magic Rings,dancing links解重複覆蓋問題,二分,百度杯也有個類似的題目。
POJ 1263 Reflections,與下面一個題目都是一類光線在球面上反射問題。解決方法是解析幾何,參數方程,向量旋轉等等。
CII 4161 Spherical Mirrors,上面題目的三維版本。
POJ 3521 Geometric Map,複雜的預處理,可以用於自虐
CII 3270 Simplified GSM Network 雖然有着V圖的模型,但是規模小,所以無須出動V圖算法,用半平面交即可。變態級的V圖算法可以諮詢三鮮教主。
CII 4617 Simple Polygon,平面上有一堆點,叫你用一筆畫把這些點連起來,連成一個閉合的簡單多邊形,線不允許出現相交。改造一下凸包算法即可。





這兩天在學習計算幾何,隨便說說自己的學習過程吧。

  基本的叉積、點積和凸包等東西就不多說什麼了,網上一搜一大堆,切一些題目基本熟悉了就差不多了。

  一些基本的題目可以自己搜索,比如這個blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html

  接下來,研究了半平面交,思想方法看07年朱澤園的國家隊論文,模板代碼參考自我校大牛韜哥:

http://www.owent.net/2010/10/acm-%E8%AE%A1%E7%AE%97%E5%87%A0%E4%BD%95-%E4%B8%AA%E4%BA%BA%E6%A8%A1%E6%9D%BF.html

  一些半平面交的題目:

  POJ 3335 Rotating Scoreboard
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3335


  POJ 3130 How I Mathematician Wonder What You Are!
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3130


  POJ 1474 Video Surveillance
  http://acm.pku.edu.cn/JudgeOnline/problem?id=1474
  知識點:半平面交求多邊形的核,存在性判斷


  POJ 1279 Art Gallery
  http://acm.pku.edu.cn/JudgeOnline/problem?id=1279
  半平面交求多邊形的核,求核的面積


  POJ 3525 Most Distant Point from the Sea (推薦)
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3525
  給出一個多邊形,求裏面的一個點,其距離離多邊形的邊界最遠,也就是多邊形中最大半徑圓。
  解法:可以使用半平面交+二分法解。二分這個距離,邊向內逼近,直到達到精度。


  POJ 3384 Feng Shui (推薦)
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3384
  半平面交實際應用,用兩個圓覆蓋一個多邊形,問最多能覆蓋多邊形的面積。
  解法:用半平面交將多邊形的每條邊一起向“內”推進R,得到新的多邊形,然後求多邊形的最遠兩點。


  POJ 1755 Triathlon (推薦)
  http://acm.pku.edu.cn/JudgeOnline/problem?id=1755
  半平面交判斷不等式是否有解。注意不等式在轉化時正負號的選擇,這直接影響到半平面交的方向。


  POJ 2540 Hotter Colder
  http://acm.pku.edu.cn/JudgeOnline/problem?id=2540
  半平面交求線性規劃可行區域的面積。


  POJ 2451 Uyuw’s Concert
  http://acm.pku.edu.cn/JudgeOnline/problem?id=2451
  Zzy專爲他那篇nlogn算法解決半平面交問題的論文而出的題目。

 

  (以上題目來自別人的blog,後面還有幾題是我自己找到的)

  POJ 1271 Nice Milk
  http://poj.org/problem?id=1271
  黑書習題

 
  UVA 11722 Joining with Friend
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page=show_problem&problem=2769
  概率問題,這個規模用半平面交有點浪費,不過就當練習了

 
  USACO 2010 MARCH GOLD StarCowraft
  http://61.187.179.132:8080/JudgeOnline/showproblem?problem_id=1829
 
  

 

 
 
 
 
 
 
 
 

  接下來稍微弄了一下座標旋轉的問題,具體可以參考武漢大牛的博文http://dumbear.com/blog/?p=143

  座標旋轉題目切得不多

  HDU 1700 Points on Cycle
  http://acm.hdu.edu.cn/showproblem.php?pid=1700
  比較基礎的一道題
 
  POJ 3845 Fractal
  http://poj.org/problem?id=3845
  注意eps的取值
 
  POJ 1133 Stars
  http://poj.org/problem?id=1133
 
  Harbin Online Contest 2010
  http://acm.hrbeu.edu.cn/index.php?act=problem&id=1006&cid=16
  三維座標旋轉。這個要有賬號才能提交,還有就是Sample Input 中第二個Sample的“275”改成“270”
 
  HDU 3623 Covering Points (2010天津網絡賽C題)
  http://acm.hdu.edu.cn/showproblem.php?pid=3623 (航電沒有這題了)
  http://acm.tju.edu.cn/toj/showp3740.html 

  FZU 2002 Shade of Hallelujah Mountain (2010福州regional)
  http://acm.fzu.edu.cn/problem.php?pid=2002

  HDU 4087 ALetter to Programmers (2011 北京現場賽)
  http://acm.hdu.edu.cn/showproblem.php?pid=4087
  三維旋轉矩陣 + 矩陣加速

 



 

 

  然後是旋轉卡殼,一個很好的學習網站http://cgm.cs.mcgill.ca/~orm/rotcal.html(不過是英文的),後來找到一個大牛的blog裏有部分翻譯http://blog.csdn.net/ACMaker,綜合起來看了一下,收益良多啊。

  一些旋轉卡殼的題目

  POJ 2187 Beauty Contest
  http://acm.pku.edu.cn/JudgeOnline/problem?id=2187
  凸包求最遠點對。可以暴力枚舉,也可以使用旋轉卡殼。


  POJ 3608 Bridge Across Islands
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3608
  兩個凸包的最近距離。

  上面兩題可以參考blog:http://www.cppblog.com/staryjy/archive/2009/11/19/101412.html(上面代碼很不錯)


  POJ 2079 Triangle
  http://poj.org/problem?id=2079
  這題以爲O(N^2)的複雜度會超時,結果就是O(N^2)複雜度

 
  UVA 10173
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=13&problem=1114&mosmsg=Submission+received+with+ID+8029560
  給定點集S,求S的最小覆蓋矩形
 
  
 





  然後看了一些掃描線之類的東西。

  推薦幾道比不錯的題目:

  POJ 2932 Coneology
  http://poj.org/problem?id=2932
 
  HDU 3124 Moonmist
  http://acm.hdu.edu.cn/showproblem.php?pid=3124
  最近圓對問題(二分 + 掃描線)

  HDU 3867 Light and Shadow
  http://acm.hdu.edu.cn/showproblem.php?pid=3867
  (按極角掃描)注意-PI和PI的位置分割




  下面看了一些隨機算法:(08年顧研論文-《淺談隨機化思想在幾何問題中的應用》)

     (1)隨機增量法:這個算法很犀利啊,把一些計算幾何的問題降了一個n複雜度。(典型的有最小圓覆蓋)

        網上找了最小圓覆蓋的隨機增量算法,裏面代碼倒是不錯,就是解釋的不是很清楚,推薦看《計算幾何算法與應用(第3版)》(鄧俊輝譯,清華大學出版社出版)中第91頁“4.7最小包圍圓”這個章節中的內容,比較詳細也很清楚,代碼我參考了這個blog的http://blog.csdn.net/pvpishard/archive/2011/01/27/6167262.aspx

    (2)模擬退火:參考顧研論文

      模擬退火的題目:

      POJ 1379 Run Away
      http://poj.org/problem?id=1379
 
      POJ 2420 A Star not a Tree?
      http://poj.org/problem?id=2420
 
      URAL 1520 Empire Strikes Back(推薦)
      http://acm.timus.ru/problem.aspx?space=1&num=1520
      顧研論文例題,不錯的題目
 
      POJ 2069 Super Star
      http://poj.org/problem?id=2069
      此題我WA和TLE了很多次
 
      POJ 3301 Texas Trip
      http://poj.org/problem?id=3301
      這題也可以用三分
      
      SPOJ 4409 Circle vs Triangle
      https://www.spoj.pl/problems/AREA1/
      模擬退火 + 解析幾何
 
      POJ 3285 Point of view in Flatland
      http://poj.org/problem?id=3285
      這題的難點在於找到合適的評估函數,當然這題也可以通過解方程組來做
 
      POJ 2600 Geometrical dreams
      http://poj.org/problem?id=2600
      這題不是模擬退火的題,但是可以用模擬退火過。非模擬退火的方法也不難
 
 
 
 
 




  解析幾何平面最近點對,。。。這些搞得也不是很深入。

 
 


  

  摺紙問題 參見大牛dumbear的blog http://dumbear.com/blog/?p=249

  兩道題目

  POJ 1921 Paper Cut
  http://poj.org/problem?id=1921
  這題相對下一題還算比較好做
 
  POJ 3806 Origami Through-Hole
  http://poj.org/problem?id=3806
  這題處理有點麻煩,我調試了很久才過
 
 
 
 
 
 
 
 
 

  圓的面積並和交,詳細可以看AekdyCoin大牛的blog

  圓的面積並:http://hi.baidu.com/aekdycoin/blog/item/c1b28e3711246b3f0b55a95e.html

  圓的面積交:http://hi.baidu.com/aekdycoin/blog/item/12267a4e9476153bafc3abbd.html

  題目:

  SPOJ 8073 The area of the union of circles
  https://www.spoj.pl/problems/CIRU/
 
  SPOJ 3863 Area of circles
  https://www.spoj.pl/problems/VCIRCLES/

  SPOJ 8119 CIRU2
  https://www.spoj.pl/problems/CIRUT/
  圓面積並的拓展
 
  HDU 3467 Song of the Siren
  http://acm.hdu.edu.cn/showproblem.php?pid=3467
 
  HDU 3239 Jiajia's Robot (推薦)
  http://acm.hdu.edu.cn/showproblem.php?pid=3239
  很巧妙的一道題,我是看了AC大牛blog中的留言才知道到方法的。
    方法見AC大牛blog中的一條留言:http://hi.baidu.com/aekdycoin/blog/item/12267a4e9476153bafc3abbd.html
 
 
  



  凸多邊形的面積並

  先看了AC大牛的blog學會了O(N^3)的方法,後來在做Codeforces的時候發現有O(N^2*logN)的方法,而且也不繁瑣

  AC大牛的博文:http://hi.baidu.com/aekdycoin/blog/item/fbe5a03232c71952ad4b5fcc.html

  Codeforces Round #83 DIV1 的 E題用O(N^3)的方法過不掉第49組數據,然後研究了其他大牛的凸多邊形交的代碼

  http://codeforces.com/contest/107/status/E

  先是看了dagon的代碼發現其實他的代碼有問題,Codeforces的數據居然沒有查出來。然後看了syntax_error的代碼,

  發現他是用類似梯形剖分的方法做的,複雜度O(N^2*logN),果斷就學習了

  題目:http://codeforces.com/contest/107/problem/E

  有關細節:http://www.cnblogs.com/ch3656468/archive/2011/10/17/2215551.html



 

  
 
 

  一類題目是給出一些點,並告訴你哪些點之間有連線,並且這些連線段之間除端點之外沒有其他交點(有時候這些線段是要自己處理出來的)。

   然後題目要你求

    1 每小塊多邊形的面積

    2 有多少個K多邊形內部不含點和線段

    3 這些線段圍成的圖形的輪廓線

  這類題目的方法都差不多,在很多大牛的blog裏都可以找到類似的方法。

  比如: gccfeli大牛的blog:http://gccfeli.cn/2007/09/%E8%AE%A1%E7%AE%97%E5%87%A0%E4%BD%95-pku1092-%E5%A5%87%E7%89%B9%E7%9A%84%E6%8A%80%E5%B7%A7.html

      watashi大牛的blog:http://watashi.ws/blog/970/andrew-stankevich-3-solution/

      Isun大牛的blog:http://hi.baidu.com/xh176233756/blog/item/29652646f0e870006a63e5cb.html

  題目:

  POJ 1092 Farmland
  http://poj.org/problem?id=1092

  ZOJ 2361 Areas / SGU 209
  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2361
  不錯的一題,watashi的blog裏有解題報告
 
  POJ 3743 LL’s cake
  http://poj.org/problem?id=3743
 
  POJ 2164 Find the Border
  http://poj.org/problem?id=2164

 
 



  三維幾何

  網上有關三維幾何的內容很少阿,代碼和題目基本都不怎麼能搜到,我也就切了不多的幾題

  前面座標旋轉裏的兩到題:

 

    Harbin Online Contest 2010
    http://acm.hrbeu.edu.cn/index.php?act=problem&id=1006&cid=16
    三維座標旋轉。這個要有賬號才能提交,還有就是Sample Input 中第二個Sample的“275”改成“270”

    FZU 2002 Shade of Hallelujah Mountain (2010福州regional)
    http://acm.fzu.edu.cn/problem.php?pid=2002
 

  SGU 110 Dungeon
  http://acm.sgu.ru/problem.php?contest=0&problem=110
  三維光線反射
 
  FZU 1981 Three kingdoms (2010福州網絡賽)
  http://acm.fzu.edu.cn/problem.php?pid=1981
  座標映射,我一開始用map一直TLE,只好改成不用map的代碼 
 
  UVA 11275 3D Triangles
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2250
  HDU 4042是這題的加強版,我使用同樣的代碼AC的
  對於這題題目中詭異的精度0.000001我並沒有特別處理
 
  HDU 4042 Fireworks (2011北京網絡賽)
  http://acm.hdu.edu.cn/showproblem.php?pid=4042
  很不錯的題目 (解題報告:http://hi.baidu.com/%D0%A1%CE%E4rj/blog/item/0114bb2dcd4cdef78b13991d.html)
 
  HDU 4087 ALetter to Programmers (2011 北京現場賽)
  http://acm.hdu.edu.cn/showproblem.php?pid=4087
  三維旋轉矩陣 + 矩陣加速

 



  其他一些題目:

  EOJ 283 Target Practice
  http://202.120.106.94/onlinejudge/problemshow.php?pro_id=283
  搜索 + 幾何
 
  POJ 1688 Dolphin Pool
  http://poj.org/problem?id=1688
  這題有好幾種做法
 
  POJ 1981 Circle and Points
  http://poj.org/problem?id=1981
  很經典的一道題目
 
  POJ 3675 Telescope
  http://poj.org/problem?id=3675
  圓和多邊形的公共面積
 
  POJ 1259 The Picnic
  http://poj.org/problem?id=1259
  最大凸洞,計算幾何 + DP
 
  POJ 1586 Three Sides Make a Triangle
  http://poj.org/problem?id=1586
  題目內容很簡單,方法也很明顯,不過想AC可不容易,精度很噁心的一題,我是看了discuss才過的
  
  HDU 3629 Convex (推薦)
  http://acm.hdu.edu.cn/showproblem.php?pid=3629
  一道不錯的題目,這題有兩種思路:
    1)http://apps.topcoder.com/wiki/display/tc/TCO%2710+Online+Round+4
    2)http://www.owent.net/2010/09/the-35th-acmicpc-asia-regional-tianjin-site-%E2%80%94%E2%80%94-online-contest-1009-convex-%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A.html

 
  HDU 3644 A Chocolate Manufacturer's Problem (2010杭州網絡賽)
  http://acm.hdu.edu.cn/showproblem.php?pid=3644
  本來想用模擬退火水一下的,結果徘徊於WA和TLE之間無法AC
 
  FZU 1973 How many stars (推薦) (2010福州網絡賽)
  http://acm.fzu.edu.cn/problem.php?pid=1973
  比較經典的一道題目
 
  POI2007 對稱軸osi
  http://www.zybbs.org/JudgeOnline/problem.php?id=1100
  很犀利的一道題目,題意是判多邊形的對稱軸個數,原來做的這種題目都是用O(N^2)的複雜度來解的,
  這次O(N^2)果斷不行,加隨機化也過不了,最後在解題報告的指導下才搞定這題。第一次發現計算幾何
  的問題居然還能用字符串的方法解。
  網上搜到的解題報告:http://hi.baidu.com/nplusnplusnplu/blog/item/d260baef2e9e9c5879f055cb.html
 
 


  下次再搞計算幾何的時候會更加深入一些。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章