Awesome Competitive Programming
Competitive Programmingを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
- リスト集
- シラバス
- チュートリアルサイト
- 公開講座
- 書籍
- 練習サイト
- 合宿・トレーニング
- 質問サイト
- 実装例
- 言語別情報
- ツール
- コミュニティ
- ブログ | YouTube・ライブ配信 | Quora
- その他の優れたリソース
- 記事 | FAQ | Awesomeリスト | 面接問題
- ライセンス
リスト集
トピック別に分類された優れたキュレーションリスト。
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Good Blog Post Resources about Algorithm and Data Structures - Codeforces | Codeforcesのユーザーが書いた素晴らしいチュートリアルブログ記事のコレクション。興味深いものには、回文木、ポリシーに基づくデータ構造などがあります。 |
| ★★★ | All of the good tutorials found on codeforces - Codeforces | Codeforcesのユーザーが書いた別の優れたチュートリアルブログ記事のコレクション。 |
| ★★★ | Data Structures and Algorithms - CodeChef Discuss | 競技プログラミングのリソースを網羅した非常に完全なリスト。ブラウザのブックマークに必須の項目。 |
| ★★★ | How to prepare for ACM - ICPC? - GeeksforGeeks | ACM-ICPCの準備作業についての詳細な解説。 |
シラバス
Find out what topics you need to learn.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | IOI Syllabus | ACM-ICPCに参加する競技プログラミング選手がテストされるための詳細なスyllabus。これはまだACM-ICPCに若干関連している。 |
| ★★★ | How to prepare for ACM - ICPC? - GeeksforGeeks | ACM-ICPCの準備についての詳細な解説。 |
| ★★☆ | Programming Camp Syllabus | 競技プログラミングにおける重要なテーマと練習問題のリスト。 |
| ★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | 新規参加者向けに800問の並べられた問題。Div2-Dまでに達するようになる。 |
チュートリアルサイト
Awesome websites with great tutorials.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Topcoder Data Science Tutorials | 信頼できるTopcoderメンバーが執筆したチュートリアルのリスト。多くのトッププログラマーはここからデータサイエンスを学び始めました。 |
| ★★★ | E-Maxx (Russian), (English) | ロシア語話者向けの競技プログラミングコミュニティで広く使用・参照されているチュートリアルサイト。オリジナルサイトの多くの記事が英語に翻訳されています。残りの記事についてはGoogle翻訳が適切に機能します。 |
| ★★☆ | Algorithms - GeeksforGeeks | トピックごとに丁寧に書かれた記事を豊富に収録したウェブサイト。アルゴリズム講座の補助として非常に優れたリソースです。 |
| ★★☆ | PEGWiki | 多くのテーマについて、驚異的な深さを持つウィキ風の解説を提供するウェブサイト。私の意見では、ウィキペディアの記事よりもはるかに優れています。 |
| ★★☆ | Notes - HackerEarth | チュートリアルを共有するための素晴らしいクラウドソーシングプラットフォームです。また、Code Monkも訪れてください。 |
| ★★☆ | USA Computing Olympiad (USACO) | そのウェブサイトには、難易度が高く、多様なアルゴリズム問題に対するプログラミング解決策のスキルを自らのペースで向上させるための複数のトレーニングページが含まれています。 |
| ★★☆ | basecs | 基本アルゴリズムとデータ構造に関する詳細で図解されたチュートリアルを掲載するブログ。 |
| ★★☆ | Competitive Programming - Commonlounge | 初心者および中級者向けの短い動画チュートリアル。各種競技プログラミングブログから最も優れたものを選んで構成された高度なチュートリアル。 |
| ★☆☆ | OLYMPIADS IN INFORMATICS | 情報教育分野の優れた学生に取り組むプロフェッショナルたちの研究および実践を専門に扱う国際ジャーナル。 |
| ★☆☆ | algolist (Russian) | すべての種類のアルゴリズムについてのロシア語サイト。このサイトに掲載されているいくつかのテーマはかなり興味深い。 |
| ★★☆ | 演算法筆記 (Algorithm Notes) (Chinese) | 台湾の競技プログラミングコミュニティ内で最も人気のあるチュートリアルサイトの一つ。このサイトの運営者は、アルゴリズムの研究に莫大な努力を払っている。 |
| ★★☆ | 国家集训队论文 1999-2015 (Papers from Chinese IOI training camps) (Chinese) | 中国のIOIトレーニングキャンプから出された論文。ある地域が強調する内容が他の地域と異なるという点が興味深い。 |
| ★★★ | Mini-Editorials, by Mostafa Saad Ibrahim trainees | 多くの問題(UVA/SPOJ/IOI/オリンピック問題を含む)に対する解法とミニエディタリー |
| ★★☆ | OI Wiki (Competitive Programming) (Chinese) | OI Wikiは、無料かつオープンで継続的に更新されるプログラミングコンテスト(競技プログラミング)の知識統合サイトであることを目指しています。このWikiは、何かを学ぼうとしている競技プログラマーにとっての補助的なガイドや手引きのような存在です |
公開講座
Consider beginning your competitive programming journey with these awesome courses!
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★☆ | Code Monk, HackerEarthによって | 競技プログラミングにおける基本的なテーマについて、ステップバイステップで解説された素晴らしいチュートリアル。 |
| ★★★ | Stanford CS 97SI: Introduction to Competitive Programming Contests | 包括的な講義スライドと、短い練習問題のリストを提供。 |
| ★★☆ | How to Win Coding Competitions: Secrets of Champions | edXにおけるITMO大学の競技コーディングに関するコース。 |
| ★★☆ | Codechef’s Indian Programming Camp | Codechef’s Indian Programming Camp 2016からのビデオ講義。セレブな競技プログラマーであるセルジー・クリク、ケビン・チャールズ・アティエンザ、アンデープ・ネクアンティが講義を行う。実際の競技コンテスト問題に適用することで、これらの概念を探索することに重点を置いている。 |
| ★★☆ | Reykjavik T-414-ÁFLV: A Competitive Programming Course | Bjarki Ágúst Guðmundsson (SuprDewd)が担当する素晴らしい講義。これらの講義は、見やすいスライドと練習に適した問題リストを備えている。 |
| ★★☆ | NCTU DCP4631: Problem Solving and Programming Techniques | 基本的なテーマについての講義で、講義スライドが良好である。 |
| ★☆☆ | Materials (English) による Arabic Competitive Programming YouTube Channel | モスタファ・サード・イブラヒムが提供する、アルゴリズムに関する幅広いテーマをカバーする資料(スライド&ソースコード) |
アルゴリズムとデータ構造の公開講座
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | prakhar1989/awesome-courses#algorithms | 著名な機関(MIT、スタンフォード、カリフォルニア大学バークレー校など)が提供するオープンコースの素晴らしい一覧。 |
| ★★★ | MIT SMA 5503: Introduction to Algorithms | アルゴリズム入門(Introduction to Algorithms)の共著者であるチャールズ・リスロン教授と、データサイエンス分野で著しい成果を上げたエリク・デマイン教授が講義を行うこのコースは、非常に優れた教材を提供しており、直感的かつ包括的な分析を併せて行っています。 |
| ★★☆ | UIUC Algorithm Course | アルゴリズムに関する幅広いテーマをカバーする授業ノート、宿題、試験、およびディスカッション問題 |
書籍
A list of recommended books for competitive programming.
| ☆ | Name | Description |
|---|---|---|
| ★★☆ | Competitive Programming, ステファンとフェリックス・ハリムによる | この本には関連するデータ構造、アルゴリズム、およびプログラミングのヒントが収録されています。これは好評を得ている本です。… 第1版は download (pdf) で無料です。 |
| ★★☆ | Programming Challenges: The Programming Contest Training Manual、スティーブン・スケインアとミゲル・リバルアによる | この本には100以上のプログラミングチャレンジが含まれており、それらに取り組むために必要な理論と重要な概念も含まれています。問題はテーマごとに分類されており、完全なチュートリアル資料で補足されています。 |
| ★★☆ | Competitive Programmer’s Handbook、アンティ・ラクソンンによる | 競技プログラミングに取り組むIOIおよびICPC選手向けの導入書。無料で download (pdf)。 |
| ★★☆ | Algorithmic Thinking: A Problem-Based Introduction、ダニエル・ジンガロ著 | 競技プログラミング問題(IOI、USACO、CCC/CCOなど)を用いてデータ構造とアルゴリズムを教える書籍。 |
| ★★☆ | Computational Geometry: Algorithms and Applications、マーカス・デ・ベルグ、オトフィード・チェン、マール・ヴァン・クレヴェルド、マーカス・オーバーマルス著 | これは、計算幾何学の幅広い問題を扱った、よく書かれた本です。 |
| ★☆☆ | The Hitchhiker’s Guide to the Programming Contests, ニテ・ニマジェンベ | この本はdownload (pdf)で無料です。この本は、競技プログラミングに関連するさまざまなテーマを扱っています。 |
| ★★★ | プログラミングコンテストチャレンジブック (Japanese), by 秋葉拓哉, 岩田陽一, 北川宜稔 | An absolutely phenomenal book. The contents, organized in a very coherent manner, are nothing short of amazing. … 培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享 (Chinese Traditional) |
| ★★☆ | 算法竞赛入门经典 (Chinese), by 刘汝佳 | The Art of Algorithms and Programming Contests (English), 打下好基礎:程式設計與演算法競賽入門經典 (Chinese Traditional) |
| ★★☆ | 算法竞赛入门经典——训练指南 (Chinese), by 刘汝佳, 陈锋 | 提升程式設計的解題思考力─國際演算法程式設計競賽訓練指南 (Chinese Traditional) |
| ★★★ | 算法艺术与信息学竞赛 (Chinese), by 刘汝佳, 黄亮 | 昔の名作。古くはありますが、この本の内容は今日の基準で依然として非常に難しいとされています。 |
アルゴリズムの書籍
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Introduction to Algorithms, ティオマス・H・コルメン、チャールズ・E・リスロン、ロナルド・L・リビストおよびクライド・ストーンによる | 「CLRS(名前の頭文字から)」とも呼ばれるこの書籍は、アルゴリズムおよびデータ構造の「聖書」とも呼ばれる。大学のアルゴリズム講義向けの最も人気のある教科書の一つである。本書は、さまざまなアルゴリズムおよびデータ構造について詳細に扱っている。執筆は厳密であり、一部の読者にとっては難しい場合がある。 |
| ★★☆ | Algorithm Design, Jon Kleinberg および Éva Tardos による | この本はアルゴリズム設計の技術について述べています。構成がしっかりしており、明瞭で理解しやすい言語で書かれています。各章には実際の例と助けになる演習問題が付いています。ネットワークフローに関する章は多くの人々から高い評価を受けています。… 教科書に付随する講義スライドは、その official website に公開されています。 |
| ★★☆ | The Algorithm Design Manual, Steven S. Skiena による | この本は読みやすいテキストで書かれています。一部の読者は、他の本よりも包括的であると感じています。その official website に、いくつかの優れたリソース(著者の自身の動画講義を含む)が見つかります。 |
| ★★★ | Algorithms, ロバート・セドウィックとケビン・ウェインによる | この本は丁寧に分類されており、詳細な説明と素晴らしい図解が組み合わさっています。一部のIOIトレーニングキャンプで教科書として使用されています。 |
| Advanced Algorithms and Data Structures, マルケロ・ラロッカによる | この本はアルゴリズムについて別のアプローチを提供し、理論と実用的な視点をバランスよく取り、各章に一つのセクションを設け、アルゴリズムを日常の業務や競技プログラミングに応用する実際のケースにどう使うかを説明しています。また、古典的、高度な、そして新しいアルゴリズムを組み合わせて紹介しています。 | |
| ★★★ | Algorithms, Jeff Erickson による | 理論的コンピュータ科学の講義ノートに基づく、自出版の教科書の無料電子版。CC BY 4.0 によるライセンスで公開されている。バックトラッキング、動的計画法、グリーディアルゴリズム、特にグラフについて、深い解説を提供している。 |
| Grokking Data Structures, Marcello La Rocca による | Grokking Data Structures は、配列や連結リストといった最も基本的なデータ構造から、グラフといった強力な構造まで、丁寧に導入してくれます。初心者には最適であり、スタートするには高校レベルの数学知識だけが必要です。各データ構造には、独自の完全なPython実装が付属しており、学んだ内容をすぐに実験できるようになっています。 |
数学の書籍
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★☆ | Discrete Mathematics and Its Applications, Kenneth H. Rosen | 離散数学は競技プログラミングに密接に関連しています。この書籍は、論理と証明、集合、関数、数列、行列、数論、再帰、カウント、確率、グラフ、木、ブール代数など、多くのテーマについて包括的な資料を提供しています。 |
| ★★☆ | Concrete Mathematics: A Foundation for Computer Science, ロナルド・L・グレイム、ドナルド・E・クヌース、オレン・パタシニクの著 | 離散数学におけるより深い洞察を提供し、数に関連するテーマに特に重点を置いている. |
| ★★☆ | Linear Algebra and Its Applications, デイビッド・C・レイ、スティーブン・R・レイ、ジュディ・J・マクドナルドの著 | 物理系(科学者やエンジニアにとって)と抽象系(数学家にとって)の間のギャップを、優れた仕事で埋めている。 |
| ★★☆ | Introduction to Probability、チャールズ・M・グラインドストとJ・ラウリ・スネルによる | これはよく書かれた確率入門書です。… download (pdf) はGNUフリードキュメンテーションライセンスのもとで公開されています。 |
| ★★☆ | How to Solve It: A New Aspect of Mathematical Method、G・ポリーラによる | 昔ながらの名作です。本書では著者が創造的に問題を解決するための体系的な方法を提供しています。 |
| ★★☆ | Intermediate Counting & Probability、デイビッド・パトリックによる | カウントと確率に関するトピック、元のアメリカ数学オリンピック選手であるデイビッド・パトリックによる。内容には、包含排除、1対1対応、ピーグホールの原理、構成的期待値、フィボナッチ数とカタラン数、再帰、条件付き確率、生成関数、グラフ理論など、多くのトピックが含まれる。 |
練習サイト
Good online judge systems / contest platforms to practice.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Codeforces | Codeforcesは、おそらく最も人気のあるコンテストプラットフォームの一つである。現在はサラトフ州大学によって維持されている。定期的なコンテストと、無数の素晴らしいオリジナル問題が提供されている。さらに、各コンテストには、通常は作者自身が執筆した即時的な助けとなるチュートリアルが用意されている。Codeforcesは、強いコミュニティを備えている。すべてを加算すると、ここでは確かに学びと成長が大きく進むことになる。 |
| ★★★ | Topcoder | Topcoderは2001年から存在している。歴史的に豊かで、技術コンテスト分野において最も評価の高い組織の一つとされている。数百のSRMが豊富な問題セットを生み出した。ここでの問題は、他のものよりも通常、より難しいものであり、そのため多くのエリートプログラマーに人気がある。年間のTopcoder Open(TCO)も広く話題になっている。 |
| ★★★ | Google Code Jam | Google Code Jamは、おそらく最も評価の高いプログラミングコンテストの一つである。このコンテストは、決められた時間内に解決しなければならない、ユニークなプログラミングチャレンジから構成されている。参加者は、解決策を得るために、どのようなプログラミング言語や開発環境を使用してもよい。 |
| ★★★ | AtCoder | AtCoderは、非常に評価の高いコンテストプラットフォームであり、高評価の日本の競技プログラミング選手たちによって構築された新しいプラットフォームである。 |
| ★★☆ | CodeChef | CodeChefは、Directiの非営利教育プロジェクトである。グローバルな競技プログラミングプラットフォームであり、プログラマーのコミュニティが学生やプロフェッショナルのコーディングスキルをテスト・向上させるために貢献している。その目的は、学生およびプロフェッショナルソフトウェア開発者に実践、競技、スキル向上のプラットフォームを提供することである。さらに、若い段階の学生にアプローチし、インドにおけるプログラミング文化を育成することを目指している。 |
| ★★★ | SPOJ | SPOJプラットフォームは、オンラインジャッジシステムを中心に構成されている。そのコミュニティが作成した問題や、過去のプログラミングコンテストから採用された問題が非常に多く、中には練習に適した素晴らしい問題も含まれている(詳しくはProblem classifiersセクションを参照)。SPOJは、高度なユーザーが自らのルールでコンテストを組織できるようにしている。 |
| ★★☆ | Timus | Timus Online Judgeは、ロシア語で最も大きなプログラミング問題アーカイブであり、自動ジャッジシステムを備えている。問題は主にウラル联邦大学のコンテスト、ウラル大会、ウラルACM ICPCサブレギオンコンテスト、およびペトロザヴォドスクトレーニングキャンプから集められている。 |
| ★☆☆ | HDU | HDUは、杭州電気大学が運営するオンラインジャッジである。ここには、中国のIOIシーンから生まれた多くのクラシック問題が収録されている。 |
| ★★☆ | Aizu Online Judge | Aizuオンラインジャッジは、秋田大学が運営するコンテストプラットフォームおよび問題アーカイブです。日本国内のプログラミングコンテストから多くの優れた問題が収録されています。 |
| ★★☆ | UVa | 古くからの問題アーカイブ/オンラインジャッジで、豊かな歴史を持っています。ここには数千の問題が掲載されており、多くのクラシック問題も含まれています。ただし、以下の「競技プログラミング演習」セクションを用いて練習することを強く推奨します。uHunt |
| ★★☆ | HackerRank | HackerRankは、消費者および企業向けの競技プログラミングチャレンジを専門とする企業です。HackerRankのプログラミングチャレンジは、さまざまなプログラミング言語で解決可能であり、複数のコンピュータサイエンス分野をカバーしています。 |
| ★★☆ | POJ | POJは、北京大学が維持するオンラインジャッジで、多くの優れた問題が収録されています。多くの中国の競技プログラミングライターはここからスタートしました。このプラットフォームは非常に古いため、不明なコンパイルや実行時の問題が発生する可能性があります。 |
| ★★☆ | Project Euler | プロジェクト・ユーラーは、美しい数学問題のセットを提供しています。また、人々が議論できるフォーラムを運営しています。 |
| ★☆☆ | Hackerearth | ハッカー・アースは、インドのバンガロールに拠点を置くスタートアップ技術企業で、採用ソリューションを提供しています。 |
| ★☆☆ | Caribbean Online Judge | COJは、キューバにあるインフォマティクス・サイエンス大学(UCI、スペイン語での略称)が運営しています。ACM ICPCおよびプログレッシブコンテストスタイルを提供しており、主にカリブ海およびラテンアメリカの問題設定者による問題を収録しています。また、問題分類とコンテストカレンダーを提供しています。 |
| ★★☆ | CS Academy | 競技プログラミング界に新しく登場したCSアカデミーは、2週間に1回コンテストを主催するオンラインジャッジです。ライブチャット、インタラクティブな講義、統合されたオンラインエディタ(実際に動作する)をサポートしています。 |
| ★★☆ | Russian Code Cup | Mail.Ru Groupが運営するプログラミングコンテスト。コンテストは3回の予選、1回のエリミネーション、1回の最終戦から構成される。各ラウンドでは、4〜8問の問題が与えられ、それらを決められた時間内に解く必要がある。 |
| ★★☆ | CodeFights | CodeFightsは、競技プログラミングの練習や面接準備に使えるウェブサイト。さまざまな難易度の毎日チャレンジ、問題のアーカイブ、そして定期的に(15分ごと)開催されるミニトーナメントが特徴。初心者向けに最適。 |
| ★★☆ | OmegaUp (スペイン語) | OmegaUpは、コミュニティベースの競技プログラミング訓練用ウェブサイト。また、メキシコ情報オリンピック(OMI:Olimpiada Mexicana de Informática)もこのサイト上で開催されている。 |
問題分類サイト
Sites classifying programming problems. Choose a category (eg. DP) of interest and practice problems on that topic.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | A2 Online Judge | 混合 |
| ★★★ | Problem Classifier | SPOJ |
| ★★☆ | UVa Online Judge | CP Book |
| ★☆☆ | Codeforces Tags | CF (DP) |
| ★★☆ | HackerRank | HackerRank |
| ★★☆ | Juniors Training Sheet, by Mostafa Saad Ibrahim | ~800 件の問題(初心者向け)でDiv2-Dまで習得するため |
| ★★☆ | Lucky貓的 UVA(ACM)園地 (Chinese) | UVa |
| ★★☆ | Topcoder problem archive | カテゴリと複雑度レベルに基づく問題一覧 |
コンテストカレンダー
Calendars for impending programming contests. (Never miss another contest!)
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Programming Contest Calendar - HackerRank | Googleカレンダーのエクスポートが可能 |
| ★★☆ | clist.by | APIを使用可能 |
| ★★☆ | Coding Calendar (Android App) | |
| ★★☆ | Coder’s Calendar: Android App, Chrome Extension, Firefox Add-on | |
| ★★★ | CodeHorizon: iOS App, Android App | |
| ★★★ | Competitive Programming Contests Calendar | Googleカレンダーのエクスポート可能 |
質問サイト
These are great sites to ask questions. Paste your codes at ideone, pastebin or other sites to avoid formatting issues.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Codeforces | 競技に関することについて質問したいなら、Codeforcesは間違いなく最も適した場所です。 |
| ★★★ | Competitive Programming - Quora | Quoraではより詳細な回答を受けることがありますが、すぐに回答を受けるとは限りません。 |
| ★★☆ | Theoretical Computer Science Stack Exchange | ここは一般的に学術的な話題の場所なので、コンテスト問題に関する質問はここではしないでください。 |
合宿・トレーニング
Online Trainings and Camps.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Online Free Problem-Solving Coaching, by Mostafa Saad Ibrahim | その性質/品質についてのコーチングの詳細および人々のコメントを参照してください。 |
実装例
Algorithm & Data structure implementations.
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | CodeLibrary、Andrey Naumenko(indy256)による | CodeLibraryには、JavaおよびC++でアルゴリズムとデータ構造の実装が多数収録されています。また、彼の GitHub Repository をご訪問ください。 |
| ★★★ | spaghetti-source/algorithm、Takanori MAEHARA(@tmaehara)による | 多くの難しいアルゴリズムおよびデータ構造の高品質な実装 |
| ★★★ | kth-competitive-programming/kactl, シモン・リンホルム(simonlindholm)らによって | カーティア大学工科大学院(KTH)から提供された、非常に整然と記録・検証されたチームノートブック。私がこれまでに見た中で、最も優れたチームノートブック(コンテストライブラリ)の一つです。 |
| ★★☆ | jaehyunp/stanfordacm | スタンフォードのチームノートは良好に維持されており、その中にあるコードは高品質である。 |
| ★★☆ | ngthanhtrung23/ACM_Notebook_new, チーム RR Watameda (I_love_Hoang_Yen, flashmt, nguyenhungtam) による、シンガポール国立大学 | RR Watameda は 2016 年 ACM-ICPC 世界最終戦でシンガポール国立大学を代表した。このノートブック内の項目は非常に標準的で整理がされている。 |
| ★★☆ | bobogei81123/bcw_codebook, 国立台湾大学のチーム bcw0x1bd2(darkhh, bobogei8123, step5)による | bcw0x1bd2 は 2016 年 ACM-ICPC 世界最終戦で国立台湾大学を代表した。このノートブックには高度なデータ構造とアルゴリズムの堅牢な実装が含まれている。 |
| ★☆☆ | foreverbell/acm-icpc-cheat-sheet, foreverbell(foreverbell)による | データ構造とアルゴリズムに関するノートブック。中国の情報科学界からもいくつかを含む。 |
| ★☆☆ | igor’s code archive, イーゴル・ナバレンニウク(アベドネゴ) | 現在はグーグルのソフトウェアエンジニアとして勤務し、グーグルコードジャムチームの一員であるイーゴル・ナバレンニウクによる優れたノートブック。 |
言語別情報
Languages and other miscellaneous knowledge.
C/C++
| ☆ | 名前 | 概要 |
|---|---|---|
| ★★☆ | Power up C++ with the Standard Template Library - Topcoder: Part 1, Part 2 | C++の基本的なSTLについての導入チュートリアルです。 |
| ★★☆ | Yet again on C++ input/output - Codeforces | C++のI/O最適化について詳しく学びましょう。 |
| ★★☆ | C++ Tricks - Codeforces … What are some cool C++ tricks to use in a programming contest? - Quora | 競技プログラミング向けの豊富なC++のテクニック。ただし、一部は慎重に使用すべきです。 |
| ★★★ | C++ STL: Policy based data structures - Codeforces: Part 1, Part 2 | GNU C++ で実装された追加データ構造についての詳細な解説。公式ドキュメントは here で見つかる。 |
| ★☆☆ | C++11 FAQ (English, Chinese, Russian, Japanese, Korean) | C++11に関するよくある質問(FAQ)のリスト。Bjarne Stroustrupが作成したC++の創始者による収集と執筆。 |
Java
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★☆ | How to read input in Java — tutorial - Codeforces | 入力の読み取りを速くする方法を学びましょう。競技プログラミングでJavaを使用する人には必須の読み物です |
| ★★☆ | How to sort arrays in Java and avoid TLE - Codeforces | クイックソートの最悪ケースを避けるためのいくつかのヒント |
| ★★☆ | BigNum arithmetic in Java — Let’s outperform BigInteger! - Codeforces | 基本的なが速いカスタムBigIntegerクラス |
| ★★☆ | EZ Collections, EZ Life (new Java library for contests) - Codeforces | アレクセイ・デルグノフ(dalex)が書いたコンテスト用のJavaライブラリ。ArrayList、ArrayDeque、Heap、Sort、HashSet、HashMap、TreeSet、TreeMap、TreeList、ペアクラスなどが実装されています |
その他
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | Bit Twiddling Hacks | ビット操作のトリックをまとめた大きなコンパイルリスト。 |
| ★★★ | Comparing Floating Point Numbers, 2012 Edition - Random ASCII | 浮動小数点数についてのすべての知識。特に幾何学のテーマに関しては必須の読み物。 |
| ★★☆ | Object-Oriented C Style Languages: C++, Objective-C, Java, C# - a side-by-side reference sheet | よく使われる文法の詳細な並列参照表 |
ツール
Awesome tools that will make your life easier.
IDE
| ☆ | 名前 | プラットフォーム | 説明 |
|---|---|---|---|
| ★★★ | Vim | CLI / Cross-Platform | Vimは、高度なプログラマの中では最も人気のあるテキストエディタの一つです。キーボードの操作だけでテキスト編集を行うことができ、非常に効率的に動作します。Vimは非常にカスタマイズ可能で、拡張性も高く、シェル(コマンドライン)との統合も非常に良好です。Vimの唯一の欠点は、初心者にとっては学習曲線が非常に高いことです。 |
| ★★★ | Emacs | CLI / Cross-Platform | Emacsはもう一つの人気のあるテキストエディタ(正確には開発環境と言える)です。VimとEmacsの比較についての議論は、その人気から常に提起されています。基本的にEmacsはテキストエディタ以上のものであり、ファイルマネージャ、ウェブブラウザ、メールクライアント、ニュースクライアントなどのプラグインを持ち、ユーザーがそれらのタスクをEmacs内部で直接実行できるようにしています。このためEmacsは「重い」と言えますが、初心者にとっては学習曲線が比較的簡単であると評価されます。 |
| ★★★ | Far Manager | ハイブリッド/Windows | ファールマネージャーは、ルーラー/ CISにおける競技プログラミングコミュニティで最も使われているエディタです。本来はファイルマネージャーですが、 FarColorer - シンタックスハイライトプラグインをインストールすることで、その上にプログラミングができます。適切に設定されたファールマネージャーは、コードを書いている際にファイル間を非常に効率的に移動できるようになります。 |
| ★★★ | Code::Blocks | GUI/クロスプラットフォーム | コード・ブロックスはC/C++のための最も一般的なIDEです。これは、多くの優れた機能を備えた、完全な多機能IDEです。プログラミングコンテストでは、コード・ブロックスは通常、Vimとともに提供されます。 |
| ★★★ | IntelliJ IDEA | GUI / クロスプラットフォーム | IntelliJ IDEA は Java 用の IDE として、間違いなく最も優れたものの一つです。Java を主な言語として使う競技プログラマーの多くがこれを使用しています。プログラミングコンテスト用に作られた非常に便利なプラグイン CHelper をぜひチェックしてください。 |
| ★★☆ | Sublime Text | GUI / クロスプラットフォーム | Sublime Text は非常に優れたテキストエディタです。複数カーソル、ミニマップ、コマンドパレットといった強力で革新的な機能を備え、強いコミュニティを形成しています。Sublime Text は非常に拡張性が高く、必ず Package Control をインストールして、おそらく最も大きなプラグインカタログの一つを探索してください。 |
| ★★☆ | Eclipse | GUI / クロスプラットフォーム | Eclipse は Java 用の他の良い IDE です。Intellij IDEA への代替案としてはまあまあ適している(現代の基準では IDEA よりやや劣る)。あるコンテストでは、何かの理由で Eclipse しか提供しないことがありますので、Eclipse を使うことに興味を持たせるきっかけになるかもしれません。 |
| ★★☆ | CLion | GUI / クロスプラットフォーム | JetBrains が開発した CLion は C++ 用の強力な IDE です。教育用無料ライセンスが提供されています。または、2018年4月現在、無料の EAP (Early Access Program) を試用できます。コードチェック機能を無効にすると、かなりの遅延を回避できます。 |
| ★☆☆ | その他のIDE | 混合 | Visual Studio は C# でコードを書く場合に使用すべきIDEです。… Atom および Visual Studio Code は JavaScript で書かれた Electron で構成されており、そのためリソースを多く消費します。… CodeLite は新しい傾向にあるIDEです。起動時間およびプロジェクト作成時間は、非常に長くなる可能性があります。 |
個人利用
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | VisuAlgo | アルゴリズムとデータ構造向けの視覚化ツールを豊富に備えたウェブサイト。 |
| ★★★ | 一般実務支援ツール: … CHelper (IntelliJ IDEA) (manual) … caide (Visual Studio, CodeLite, セパレートコマンドラインアプリ) … JHelper (AppCode, CLion) online-judge-tools (セパレートCLIツール、積極的に維持されています。) | コンテストのパース、インラインライブラリコードの処理、テストフレームワークを提供する優れたツール。これらにより、ウィンドウの切り替えやコピー・ペーストを繰り返す貴重な時間を無駄にせずに済みます。 |
| ★★☆ | Codeforces パーサー: … Codeforces Parser … GoCF … cfparser (emacs) cfparser (cli) | これらのツールはCodeforcesのコンテスト問題をパースし、サンプルテストの実行を支援します. |
| ★★★ | The On-Line Encyclopedia of Integer Sequences (OEIS) | 非常に魅力的なエヌクリプディアで、無数の整数列のデータベースを備えています。また、強力な検索エンジンも備えています。たとえ難しそうに見える組み合わせ論の問題も、単純または既に研究された整数列に等しい場合があります. |
| ★★☆ | 構文強調ツール: … tohtml.com … markup.su … hilite.me | スライドやチーム用ノートブックを作成する際に、美しくフォーマットされたコードスニペットを簡単に作成できる。ハイライトされたコードスニペットをコピーし、お気に入りのWYSIWYG(What-You-See-Is-What-You-Get)エディタに貼り付けましょう! |
| ★★☆ | コード共有:… Ideone.com … Pastebin.com … Ubuntu Pastebin | これらのツールはコード共有用の半永久的なページを生成します。特に、誰かに自分のコードを確認してもらう際には非常に便利です。 |
| ★★☆ | Ineffable | ローカルでの評価に使えるシンプルなコマンドラインベースの評価ツール。 |
| ★★☆ | uDebug | UVa Online Judgeにおける問題に対してユーザーが指定した入力に対して期待される出力を提供するプラットフォーム。一部の問題はデバッグ用に追加のテストケースを提供する。 |
コンテスト準備
| ☆ | 名前 | 説明 |
|---|---|---|
| ★★★ | polygon | polygonはプロフェッショナルなコンテスト準備に向けたプラットフォームおよび豊富なツールを提供する。… 例: Validators with testlib.h - Codeforces |
| ★★☆ | Graph Editor | グラフを作成し可視化するための素晴らしいツールです。 |
| ★★☆ | tcframe | 競技プログラミング問題のテストケースを生成するためのC++フレームワークです。 |
| ★★★ | Virtual Judge (vjudge) | Virtual Judge (vjudge) は、著名な問題アーカイブからの問題を用いて仮想コンテストを作成できるようにします。 |
| ★★☆ | BNU Online Judge | BNU Online Judge は、ユーザーが仮想コンテストを作成できるようにしています。 |
| ★★☆ | Kattis | Kattis がコンテストの準備に協力(助言をメールで依頼してください) |
コミュニティ
Meet the god-like competitive programmers! Learn helpful tips, tutorials and insights from these people :)
ブログ
| 名前(ハンドル) | ブログ名 |
|---|---|
| Codeforces blogs | |
| Petr Mitrichev (Petr) | Algorithms Weekly |
| 佐島マコト (rng_58) | rng_58’s blog |
| ブルース・メリー (bmerry) | Entropy always increases |
| プルミスラフ・デビアク (Psyho) | Psyho’s blog |
| アヌディープ・ネクンティ (anudeep2011) | Namespace Anudeep ;) |
| vexorian (vexorian) | vexorian’s blog |
| Ashar Fuadi (fushar) | Fushar’s blog |
| LiJie Chen (WJMZBMR) | WJMZBMR (Chinese) |
| Huang I-Wen (dreamoon) | 小月的耍廢日誌 (Chinese) |
| 楊翔雲 (morris1028) | Morris’ Blog (Chinese) |
| 杜宇豪 (TooDifficuIt, TooSimple, xudyh) | xudyh (Chinese) |
YouTube・ライブ配信
| 名前 (ハンドル) | リンク |
|---|---|
| ペトール・ミトリチェフ (ペトール) | Youtube |
| ラヴィンダラバウ・ラヴラのゲート講義 | Youtube |
| モスタファ・サード・イブラヒム (mostafa.saad.fci) | Competitive Programming Youtube (Arabic Speech-English Text) |
| ツシャール・ロイ | Youtube、多くのチュートリアル動画を提供しています。 |
| GeeksforGeeks | Youtube |
| アルゴリズムライブ! | Youtube |
| CodeChef | Youtube |
| HackerRank | Youtube |
| IDeserve | Youtube |
| code_report | Youtube, HackerRank, LeetCode, Topcoder および Codeforces のコンテスト更新と問題チュートリアルを提供。 |
| アルゴリズムの狼を”Sothe”する | Youtube |
| エゴル・クリコフ(エゴル) | Youtube |
| アダム・バーデシェビッチ(サブスクリプター) | Youtube |
| ボハダン・プリシェンコ(I_love_Tanya_Romanova) | Twitch, Youtube |
| ヴラディミール・スミカロフ(enot.1.10) | Twitch, Youtube |
| アレクサンダー・アバス(Alex7) | Youtube |
| ミハイル・チホミロフ(Endagorion) | Youtube |
| カミル・デボワ(Errichto) | Youtube |
| デイビッド・ハーマイア(SecondThread) | Youtube, エディトリアル、高度なトピックの高质量講義 |
| mycodeschool | Youtube, 基本的なプログラミング、データ構造およびアルゴリズムに関する高质量動画 |
| ウィリアム・リン (tmwilliamlin168) | Youtube、主にストリーム配信で、励ましを提供し、時には洞察深い内容をもたらす |
| コードノコード (kazama460) | Youtube、グラフ理論、数論、DP、高度なデータ構造など、さまざまな競技プログラミング関連のトピックをカバーする短い講義 |
| コリン・ギャルン(galen_colin) | Youtube、エディタリアル、スクリーンキャスト |
| ウィリアム・フェセット | Youtube、ほぼすべてのデータ構造とアルゴリズムをカバーする高品質ビデオ |
Quora
Visit Competitive Programming - Quora (Top 10 Most Viewed Writers).
| 重要な地域の人物 | 概要 |
|---|---|
| Bill Poucher | バイラル大学のコンピュータサイエンス教授。 ACM-ICPCの執行役員。 |
| Michal Forišek (misof) | IPSCおよびIOIの組織者。スロベニアのコメニウス大学のコンピュータサイエンス教師。アルゴリズムおよびコンピュータサイエンス教育分野の研究者。かつて高評価を受ける競技プログラミング参加者。 |
| Ahmed Aly (ahmed_aly) | A2OJの創始者。HackerRankのソフトウェアエンジニア。以前はGoogle Code Jamチームのメンバー。 |
その他の優れたリソース
記事
Informative and helpful articles
| Subject |
|---|
| Overview of Programming Contests, by Przemysław Dębiak (Psyho) |
| The ‘science’ of training in competitive programming - Codeforces, by Thanh Trung Nguyen (I_love_Hoang_Yen) |
| If you ask me how to improve your algorithm competition skill, I will give you the link of this blog. - Codeforces, by Huang I-Wen (dreamoon) |
| How to prepare for ACM - ICPC? - GeeksforGeeks, by Vishwesh Shrimali |
| Complete reference to competitive programming - HackerEarth, by Ravi Ojha |
| Getting started with the sport of competitive programming - HackerEarth, by Triveni Mahatha |
FAQ
Fine answers to frequently-asked questions
Awesomeリスト
Relevant awesome lists
| 名前 | リンク |
|---|---|
| C++ ブック | The Definitive C++ Book Guide and List - Stack Overflow |
| Java ブック | What are the best books to learn Java? - Quora |
| 高度な Java ブック | What is the best book for advanced Java programming? - Quora |
| アルゴリズム | tayllan/awesome-algorithms |
| アルゴリズムの可視化 | enjalot/algovis |
| 数学 | rossant/awesome-math |
| C++ | fffaraz/awesome-cpp |
| Java | akullpp/awesome-java |
| コース | prakhar1989/awesome-courses |
| 無料のプログラミング書籍 | vhf/free-programming-books |
| コミュニティがキュレーションしたC++リソース | Hackr.io |
面接問題
| 名前 | 説明 |
|---|---|
| CareerCup | ソフトウェアエンジニアのインタビュー準備に最も人気のあるウェブサイト |
| InterviewBit | 興味を引く、新鮮で魅力的なゲームプレイデザインを備え、実践への関心を高めるよう設計されています |
| Awesome Interviews | 素晴らしいインタビュー質問を厳選したリスト |
| LeetCode | ソフトウェアエンジニアのインタビュー準備に最適な、よく説明された解決策を備えた整理されたウェブサイト |
ライセンス
素晴らしい競技プログラミングは、Creative Commons Attribution 4.0 International Licenseに従ってライセンスされています。
