コンテンツにスキップ

C++

文法・言語仕様

標準ライブラリの使い方

言語アップデートによる新機能のまとめ

  • 競プロに便利なC++17新機能まとめ - 競技プログラミングに役立つC++17の標準ライブラリ、言語機能が16種類紹介されている。記事のサンプルコードは、AtCoderのGCC9.2.1システムで動作確認済み。
  • 競プロで便利なC++20新機能 - C++20の新機能のうち、競技プログラミングで便利な計16種類の標準ライブラリ・言語機能をまとめた記事。

    注意

    AtCoderのジャッジシステムでは未対応の機能も含まれている(2023年7月時点)。

注意事項

  • intXX_tに関して - ビット長で名付けられた型(intXX_t)を使うときに注意が必要な点を紹介した記事。
  • rep マクロ - 繰り返し処理を行うマクロ(repマクロ)の定義・利用方法によって、意図しない動作を引き起こす可能性があることと対処方法を紹介した記事。
  • 競プロで踏みがちなC++の罠 - 2019年12月時点におけるC++の未定義動作や言語仕様の勘違いなどにより、意図とは異なる結果になりうる事例を紹介した記事。

    注意

    最新のジャッジシステムの実行環境および言語仕様の確認を推奨。

実装テクニック

アルゴリズム・データ構造の活用による高速化

Dinic法

  • Dinic法とその時間計算量 - Dinic法(最大流問題を効率的に解くことができ、かつ、比較的実装が容易なアルゴリズム)について、標準的な実装方法を解説した記事。実装を間違えると、計算量が指数オーダーになることが指摘されている。

k番目に小さい値の取得

畳み込み演算

抽象化Segment Tree

  • 遅延Segtree3 - C++20から導入された「concepts」を利用した抽象化Segment Treeの実装例が紹介されている。

    注意

    遅延Segment Treeの実装に関しては、別の記事を参照されたい。

抽象化Segment Tree Beats

データ構造の設計

定数倍高速化