計算幾何
基本的叉積、點積和凸包等東西就不多說什麼了,網上一搜一大堆,切一些題目基本熟悉了就差不多了。
一些基本的題目可以自己搜尋,比如這個blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html
接下來,研究了半平面交,思想方法看07年朱澤園的國家隊論文,模板程式碼參考自我校大牛韜哥:
一些半平面交的題目:
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.htmlFZU 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(上面程式碼很不錯)
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=1092ZOJ 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.htmlHDU 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
下次再搞計算幾何的時候會更加深入一些。
相關文章
- 計算幾何:模板
- 計算幾何模板
- [筆記] 計算幾何筆記
- 【計算幾何】向量表示
- 【總結】計算幾何模板
- 二維計算幾何模板
- 【計算幾何】線段相交
- 三維計算幾何模板
- Something about 計算幾何
- 計算幾何 —— 二維幾何基礎 —— 距離度量方法
- 邊緣計算、霧計算、雲端計算區別幾何?
- 【學習筆記】計算幾何筆記
- 計算幾何_向量的實現
- 【計算幾何】多邊形交集
- 計算幾何——平面最近點對
- POJ - 1556 【計算幾何 + 最短路】
- An Easy Problem?! POJ 2826 計算幾何
- 計算幾何常用的函式/方法函式
- BNUOJ 12887 isumi(計算幾何+最大流)
- SGU 124 Broken line(計算幾何)
- 【計算幾何】Triangles HUST 1607
- 【計算幾何】多邊形點集排序排序
- C++計算幾何演算法大全C++演算法
- POJ 2991 Crane(線段樹+計算幾何)
- 【計算幾何】點在多邊形內部
- POJ 1556 The Doors(Dijkstra+計算幾何)
- 二維幾何常用運算
- SGU 120 SGU 228 Archipelago(計算幾何)Go
- 計算機視覺—圖片幾何變換(2)計算機視覺
- 【計算幾何】求線段相交交點座標
- BZOJ 1027 合金 計算幾何,Floyd判環
- CG_Hadoop:基於MapReduce的計算幾何Hadoop
- 計算機圖形學(四)_幾何變換_1_基本的二維幾何變換(一)計算機
- POJ 1113 Wall(思維 計算幾何 數學)
- 計算幾何(一):凸包問題(Convex Hull)
- CodeForces 887 E. Little Brother(計算幾何+二分)
- 丘成桐演講全文:幾何與計算數學的關係
- [計算幾何]圓與三角形是否相交