2011-12-29 89 views
6

這是一個廣泛的問題,但想知道專家的意見。 我遇到一個文檔Suffix arrays – a contest approach,也發現一些意見,參與者應該準備好這樣的數據結構。現在很多在線編程難題正在隨着時間的推移而來。所以我想知道應該準備好的其他數據結構/算法是什麼。編程競賽辦法

+0

也許更適合[codegolf.se]? – mac 2011-12-30 09:43:07

回答

1

查看這些featured articles @ TopCoder。他們非常酷。

當你在這裏,我建議參加TopCoder的編程競賽。因爲最好的改進方法是練習&繼續參加這樣的比賽。

另外Project Euler太真的讓人上癮。

0

另外,看看Programming Challenges這本書,它是一個很好的參考資料 - 它提供了在編程比賽中獲得成功所需的主題,並由一個online法官支持。

11

我已經參加了10年左右的比賽,並且自己創造了一個不太差的圖書館。大多數真正優秀的競爭對手都有自己的博客,比如說傳奇Petr Mitrichev,並且他們解釋了他們在競爭問題上的想法。閱讀這些內容可以幫助你 - 如果你看到一個好主意,實施它並保存它。 當我看到一個涉及他們的問題時,我將算法添加到我的庫中。這樣我可以驗證我的實現是否正確 - 如果我的實現至少有一個問題,我只添加一個算法。

下面是一些我的算法列表:

  • 我有一個代表點,線,面段,圓類和一些操作與他們巨大的geometrial庫(如交叉路口,設定點等)
  • 的Tarjan的algorithm爲強連通分量
  • Dinitz流算法
  • 偶匹配實施
  • 的凸殼的
  • 最小代價最大流實現
  • Aho-Corasic字符串搜索算法
  • Knuth-morris-pratt字符串搜索算法
  • Rabin-Karp字符串搜索算法
  • 線性時間使用ukonnen的algorithm
  • 快速冪後綴樹
  • 多項式實現
  • 大整數實現
  • 小數實施
  • Matrix類實現
  • 因式分解
  • Eratosthenes Sieve
  • Segment Tree
  • Hungarian algorithm
  • 2-Sat算法。爲此,我使用上面提到的Tarjan算法。

你會注意到一些最基本的算法(如BFS,DFS,Dijkstra)沒有在上面提及,那是因爲我沒有實現它們。這些算法不能簡單地通用化,只需複製和粘貼它們,一切都可以工作。另外,我花了不到5分鐘的時間來編寫它們 - 我通常只在我的庫中放入那些難以實現的算法,或者在實現它們時容易出錯。