制約C++のテクニック標準ライブラリは一括でインクルードする配列の要素を探索する最後にはじめに1年ぶりに競プロやったら悲惨な状況だったけーとらです。競プロって便利な関数1つ知っているだけで解けるような問題もあるんですけど、細かな仕様まで覚えておけるはずもなく。この現象、もう何度目なんだろう。飽きては久々にやって悲惨を繰り返しているのでここにまとめておきます。解法のテクニック問題のパターンで瞬殺できるタイプのテクニック。問題文に誤魔化されない数値が2^64以上(10^19より大きい)の場合は、文字列として処理する。次のような問題がこれに該当する。高橋君は、レジ打ちの仕事をしています。9の11個のボタンがあります。レジの機械には、はじめ0が表示されています。ボタン00を押すと、表示されている数が100倍されます。それ以外のボタンを押すと、表示されている数が10倍されたあとに、押されたボタンに書かれている数が加算されます。高橋君は、レジに整数Sを表示させたいです。レジにSが表示されている状態にするためには、少なくとも何回ボタンを押す必要があるか求めてください。整数https://atcoder.jp/contests/abc283/tasks/abc283_c入力が整数だとか、数を10倍とか、なんだか数値型で扱うようなことが書いてある。ところが、入力を文字列として扱って、先頭から順に00が何個あるか数えるだけで良かったりする。円は長さ2倍の列として円の列になっているようなものは、長さを2倍の列として扱えば、始点を決めて処理できる。次のような問題がこれに該当する。問題文N個のピースに分かれている円形のホールケーキがあり、時計回りでi番目にあるピース(以下、ピースiとする)の大きさはAiです。1≤i≤N−1に対し、ピースiとピースi+1は隣接しており、ピースNとピース1も隣接しています。ケーキのある連続するピースを選ぶ方法であって、選んだ部分が全体の大きさのちょうど10分の1になるものは存在するか、判定してください。制約1≤N≤10^51≤Ai≤10^9入力は全て整数https://atcoder.jp/contests/typical90/tasks/typical90_bxピースの大きさ配列を要素N個だけで用意すると、末尾をまたぐような処理が辛い。これを要素N個の配列の末尾に同じ配列をくっつけた要素2N個の配列を用意すると、ピース0からピースN-1のいずれのピースから初めても一周分のピースが配列の後ろに用意される。C++のテクニックその名の通り、C++で使えるテクニック。標準ライブラリは一括でインクルードする「bits/stdc++.h」を使うと、C++の標準ライブラリ(iostream、string、vector、map、set、queue、stack、algorithm等)を一括でインクルードすることができる。Collection)環境においてのみ利用可能で、他のコンパイラや環境では使用できないため、競プロ以外では恐ろしくて使えない。配列の要素を探索するソート済みのコンテナ(配列、vector)を二分探索する場合、以下の関数が使える。lower_bound:指定された値以上の最小の要素を指すイテレーターを返すupper_bound:指定された値より大きい最小の要素を指すイテレーターを返すbinary_search:指定された値が存在するかどうかをbool値で返す以下、サンプルコード。0;}最後に随時更新。あまりにも増えてきたら記事分けます。見つかりませんでした。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。10年前のマウスを分解してみた2023.07.25【雑記】Excel,Word,PowerPointを読み取り専用で開くスクリプトを作った。【C++】簡単なソケット通信プログラムを作ってみた。無料webツール置き場。動作に問題があれば連絡ください。情報系に関連しないことはこちらで。不定期更新の気ままなブログです。情報学部生の気ままなブログ.ホーム検索トップサイドバータイトルとURLをコピーしました。