ウホウホゴリラッホ

主に勉強したことをまとめていきます。twitter:@pytran3

競プロ

詰まった時に参照するリスト

考察で詰まった時用確認リスト 考察詰まった時ようにまとめる。デバッグのアイデアとかも含む。 実装・デバッグ スモールケースで特殊化していないか or する必要がないか バグを埋めこみやすいのでうまく使い分ける dpで前回の状態をただ下ろせば良いやつを…

g++のデバッグモード

配列外参照はつらい のでデバッグオプション-D_GLIBCXX_DEBUGでエラーを吐くようにする。 g++ -O2 -std=c++14 -D_GLIBCXX_DEBUG 実行例 $ g++ -O2 -std=c++14 -D_GLIBCXX_DEBUG Main.cpp && ./a.out 3 2 3 5 8 /usr/local/Cellar/gcc/8.2.0/include/c++/8.2.…

降順sort

実装 vector<int> a(n); sort(all(a)); //昇順 sort(all(a), greater<int>()); //降順 sort(a.rbegin(), a.rend()); //降順</int></int>

隣合うbitのチェック

実装例 Misteerさんのコードを眺めてたら賢いと思ったので記録。 i番目とi+1番目のbitが立っていること独立にやるのではなく(b >> i) % 4 == 3でチェックする。賢い。 ※ 元コードだとvalidationだけど加算に書き換えている。 int w = 8; int sum = 0; for (i…

uniqueにする方法

setもあるけど std:uniqueは隣接する重複要素を削除し配列の前に詰める。削除後の末尾のptriteratorを返却する。 eraseで後ろのゴミになっている部分を削除する。 vector<long long> u(n); REP(i, n) cin >> u[i]; sort(u.begin(),u.end()); //sortしないとuniqueには必</long>…

C++で拡張for文

実装例 const auto&で受けるのが万能そう for(const auto& d : {3, 5, 15, 25, 75}) { cout << d << endl; }

斜め累積和

斜め方向の累積和 斜め方向の累積和を以下の問題で使用した。今後も使いそうなので整理しておく。 atcoder.jp Submission #6315441 - Tenka1 Programmer Contest 実装例 cumの定義は第一引数を、第二引数をとして各斜め線のまでの累積和とした。 ll h, w; ci…

next_permutationの使い方

結論 これを見ろ vivi.dyndns.org 実装例 sort(all(a)); ll ans = 1e12; do { ll tmp = 0; REP(i, a.size()-1) { tmp += g[a[i]][a[i+1]]; } ans = min(ans, tmp); } while(next_permutation(all(r))); //辞書順に取り出す。辞書順最初に戻るタイミングでfal…

priority_queueの使い方

注意点 デフォルトでは大きいものからpopされる(Python, Javaの逆) 実装例 priority_queue<ll> p; p.push(2); p.push(1); while(p.size()) { cout << p.top() << endl; //参照 p.pop(); //削除 } // 昇順に取り出したい場合はgreaterを使う // 真ん中のvectorは</ll>…

min, maxの求め方

前に調べてたけど記憶から消えていたのでメモ XXX_elementはポインタを返すことに注意 vector<int> a; int min_value = *min_element(all(a)) ; int max_value = *max_element(all(a)) ; 普通のmin,max int min_value = min(1,2); int max_value = min({1,2,3});</int>

出力の誤差死回避

出力のフォーマットを指定 coutに適当にdoubleを渡すと表示桁数が6桁とかになって死ぬらしい。 以下のコードで小数部(fixed)を12桁と指定している。 cout<

class, structの勉強メモ

概要 流石に自作の構造体が無いと辛すぎるのでまとめた。お前UF木ライブラリで持ってるの何? 結局よくわからなかったので要復習!! classとstructの違い デフォルトのメンバのアクセス修飾子が違うだけっぽい? class: private struct: public 競プロでは…

エクサウィザーズ 2019 E - Black or White

問題 atcoder.jp 考察 よくわからない有理数がなんとかは後ろの方で説明。 ある状態でチョコを食べる時、チョコが十分にある場合はであるが、片方のチョコがなくなってしまう場合には or となっているためチョコがなくなっているケースを考慮する必要がある…