tips:atcoder:start
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| tips:atcoder:start [2020/05/18 14:36] – [mod] yuuho | tips:atcoder:start [2020/09/13 11:36] (現在) – [c++データ構造再確認] yuuho | ||
|---|---|---|---|
| 行 3: | 行 3: | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | === 有用な外部サービス === | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| === 精進 === | === 精進 === | ||
| 行 50: | 行 55: | ||
| ==== 数値最大値 ==== | ==== 数値最大値 ==== | ||
| AtCoderでは Linux x86_64 を使っているので int 32bit, long 64bit, long long 64bit である。 | AtCoderでは Linux x86_64 を使っているので int 32bit, long 64bit, long long 64bit である。 | ||
| - | ^ 型 ^ 最大値 ^ | + | ^ 型 ^ 最大値 ^ 値 ^ |
| - | | int | 21億 = $2 \times 10^5$ | | + | | int | 21億 = $2 \times 10^9$ | '' |
| - | | long = long long | 922京 = $9 \times 10^{18}$ | | + | | long = long long | 922京 = $9 \times 10^{18}$ |
| 最大値/ | 最大値/ | ||
| 行 98: | 行 103: | ||
| vectorの初期化 | vectorの初期化 | ||
| <code c++> | <code c++> | ||
| + | // 1次元 | ||
| + | vector< | ||
| + | |||
| // 2次元 | // 2次元 | ||
| vector< vector< | vector< vector< | ||
| 行 114: | 行 122: | ||
| * for文: secondとfirstでアクセス.\\ <code c++> | * for文: secondとfirstでアクセス.\\ <code c++> | ||
| - | | + | |
| - | value = itr-> | + | value = itr-> |
| + | } | ||
| + | </ | ||
| valはmutable? | valはmutable? | ||
| 行 126: | 行 136: | ||
| === pair === | === pair === | ||
| - | tupleの要素数が2のケース。使わなくても良いので解説しない。 | + | tupleの要素数が2のケース。 |
| + | mapのキーとして利用できる。 | ||
| + | |||
| + | 標準の記号だけで作れるので書くのが楽。 | ||
| + | <code c++> | ||
| + | map< pair< | ||
| + | data[{0,1}] = {0,0}; | ||
| + | data[{0,1}] = { data[{0, | ||
| + | </ | ||
| + | |||
| + | 最初の記号には '' | ||
| === tuple === | === tuple === | ||
| 行 157: | 行 177: | ||
| * push() で最後に追加。 | * push() で最後に追加。 | ||
| + | <code c++> | ||
| + | queue< | ||
| + | q.push(i); | ||
| + | long x = q.front(); q.pop(); | ||
| + | </ | ||
| ==== 便利関数について ==== | ==== 便利関数について ==== | ||
| 行 254: | 行 279: | ||
| ^ 通常 ^ modバージョン ^ | ^ 通常 ^ modバージョン ^ | ||
| | 和 '' | | 和 '' | ||
| - | | 差 '' | + | | 差 '' |
| | 積 '' | | 積 '' | ||
| | 商 '' | | 商 '' | ||
| 行 284: | 行 309: | ||
| 最大公約数、最小公倍数が必要な場面がかなり多いので覚えておく。 | 最大公約数、最小公倍数が必要な場面がかなり多いので覚えておく。 | ||
| - | < | + | < |
| long gcd(long a, long b){ | long gcd(long a, long b){ | ||
| if(a < b) return gcd(b, a); | if(a < b) return gcd(b, a); | ||
| 行 370: | 行 395: | ||
| TODO) ABC162用のメモに詳しく書いておいたのでそれをこっちに書く | TODO) ABC162用のメモに詳しく書いておいたのでそれをこっちに書く | ||
| + | |||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | |||
| + | '' | ||
| + | * '' | ||
| + | * Lは未満または同じ値 | ||
| + | * Rは大きい | ||
| + | * '' | ||
| + | * Lは未満 | ||
| + | * Rは大きいまたは同じ値 | ||
| + | |||
| + | 欲しい答えに,「同じ値となる場合を含むか?」「大きい/ | ||
| + | |||
| + | |||
| + | * 出力が t 以上となる x の値が欲しいときは '' | ||
| + | * 出力が t より大きくなる x の値が欲しいときは '' | ||
| + | * 出力が t 以下となる x の値が欲しいときは '' | ||
| + | * 出力が t 未満となる x の値が欲しいときは '' | ||
| + | |||
| ==== union-find ==== | ==== union-find ==== | ||
| 行 581: | 行 627: | ||
| ハッシュで得られるようにして、90度でペアにできるものはそのうちひとつを選ぶみたいな? | ハッシュで得られるようにして、90度でペアにできるものはそのうちひとつを選ぶみたいな? | ||
| ただし180度は内積0ではないからそれほど単純ではない。 | ただし180度は内積0ではないからそれほど単純ではない。 | ||
| + | |||
| + | === modの計算 === | ||
| + | 負になっていたら脳死で '' | ||
| + | 減算の処理でミスりがち。 | ||
| + | |||
| + | === 累積和は最初に0あれ === | ||
| + | ABC172C\\ | ||
| + | 累積和データを作るとき最初の部分に0を入れておかないと条件分岐が無限に増えて実装で死ぬ。 | ||
tips/atcoder/start.1589812610.txt.gz · 最終更新: 2020/05/18 14:36 by yuuho
