えびちゃんの日記

えびちゃん(競プロ)の日記です。

ICPC 2020 国内予選参加記

これは夢日記ではありません*1。 夢日記は これ と これ。 チームメイトは夢日記と同様、monkukui と TAB とえびちゃんです。 チーム名は tsutaj で、これは去年までチームメイトだった先輩に由来します。 tsutaj 抜きのチームに tsutaj と名付けるの、余因…

ICPC 2020 夢地区参加記 2

参加記 1 は これ。 意外と好評でした。 辛そうにしてるの笑うのはなあと思いつつも内容が面白くてめちゃくちゃ笑っちゃった— olphe (@_olphe) 2020年11月2日 おもしろかった シリーズ化してほしい— そすうさᕱᕱ(素数うさぎ) (@wk1080id) 2020年11月3日 シ…

ICPC 2020 夢地区参加記

夢の中で ICPC に出てた、参加記書くか迷う— えびちゃん (@rsk0315_h4x) 2020年11月2日 ICPC に夢の中で参加してきました。せっかくなので参加記を書きます。 見たい— olphe (@_olphe) 2020年11月2日 期待しないでね。 チームメンバーは monkukui と TAB と…

あとでなおす

競プロをしていて、一時的に値を決めておくけれども、提出時には直したいということがあるかもしれません。何らかの理由で。 int m = 10; // to be edited 実際には m は入力によって変えるべきだけれども、手元のデバッグなどの都合では定数の方が楽、とか…

要素の追加・削除と mex を対数時間で処理するよ

コンテスト中に見に来た人へ:コンテスト後、この記事にある方法以外についても復習しておくのをおすすめします。 自然数(\(0\) を含むよ)の集合において、mex というのは、minimum excludant (minimum excluded) の略で、それに含まれない最小の自然数の…

vector の多次元版をつくるやつ

自分が楽に作れるようになると忘れがちなんですが、どうやらこれを書くのに疲弊する人がまだいるようです。 size_t n1, n2, n3; // ↑入力を受け取るとかして、値が入るとする vector<vector<vector<int>>> v(n1, vector<vector<int>>(n2, vector<int>(n3, x))); みたいに書くのはさすがに大変だと</int></vector<int></vector<vector<int>…

初心者向けバグ取り

「バグったたすけてー」と言っている初心者の人のコードを見たとします。 バグを見つけてあげるのは(多くの場合)簡単ですが、それを伝えただけでは成長につながらないかなぁとも思います。 「こういうところをこうやって確認したよ」「そしたらこうなった…

C++ のコンテナやイテレータの罠

C++ を使うのが悪くて、Rust を使えばいいんじゃないですか? これ系の記事を乱立させていて申し訳ないです(これこれの話ってどの記事?となりそうなので)が、罠が多い C++ 側に責任があるので、えびちゃんは悪くありません。 それに、一つ長い記事を書い…

最近のえびちゃんの話

興味のある人だけ見てくれたらいいです*1。 えびちゃんが最近なにをしているかを書きます。 まず、競プロをほぼしていません。 ABC に出るくらいはして、下位層の人にはまだ勝てますが、半引退みたいな状態になっています。 お勉強はしています。 Rust を始…

添字や境界条件で毎回バグらせてる人かわいそう

off-by-one エラーとか呼ばれるやつです。「1 ズレてたせいでこわれた」というやつですね。 バグらせやすい書き方をするのがよくないです。書き方を改めるのがよいでしょう。 ここでは、えびちゃんがよくやっている書き方を紹介しますが、別にこれが絶対とい…

リバースイテレータの解説するよ

std::sort(a.rbegin(), a.rend()); みたいなやつです。 便宜上 std::vector のようなものを考えますが、std::set とかについても同様です(random-access モノは除く)。 普通のイテレータ まず普通のイテレータに触れましょう。 [0][1][2]...[n-1][-] ^ a.b…

セグ木のお勉強を敬遠している人へ

まず、セグ木自体は難しいものではないので、変な先入観は無くしましょう。 以下は、再帰の知識がなくても読めるように心がけます。 「何から始めたらいいかわからない」という人は、とりあえず最初に述べるセグ木を理解するところから始めるといいと思いま…

黄色コーダーが就活をがんばりました

tl;dr AtCoderJobs 最高! 一番好きな就活サイトです 個人的には「M1になるまでは競プロを楽しくやってて、M1になってさすがに就活やべえってなった時に競プロ経由で色々らくできてラッキー!」くらいの距離感が一番すきwhttps://t.co/DGbzKSk3pu— chokudai…

えびちゃんのシェルのかわいいやつ

これに出てくる (*'-')b この子です。 つくりかた この子の挙動は次の通りです。 直前のコマンドが空なら何もしない 直前のコマンドが空でないなら、実行ステータスに応じて話す まず、現在の状態を示す変数 state を用意します。 この変数は次のように値が…

Zsh を導入したよ

長いこと Bash を使い続けていました。 逆張り癖が災いしすぎた気がします。 Bash は man ページを一通り読むくらいには愛着を持っていたり、あれこれ触ったりしていました。 Zsh の導入自体は何度か挑戦しようとしていたのですが、(多くは勉強不足で)合わ…

競プロ C++ イディオム FAQ

今までいろんな人に何回も説明した内容は、これからも何回も説明することになりそうなので、記事としてまとめておいてみます。 自分としてもこの記事へのリンクを貼ればよい上、読んだ人が(辞書で隣の単語もまとめて覚えるみたいな感じで)別のことも知れた…

PAST アルゴリズム実技検定 #2 解説

PAST #1 の記事 に続いて、今回も解説記事を書きます。 公式の解説 がもう上がってた。早いね。 問題へのリンク。 A - エレベーター 1F, 2F, 3F, ... を渡すと 1, 2, 3, ... に、B1, B2, B3, ... を渡すと 0, -1, -2, ... にしてくれる関数を考えます。 int …

Codeforces で薄橙になるまでにしたこと

プロフィールページでリロードをたくさんしました。 というのも、レート変動を待たずに寝ちゃう人は知らないかもなんですが、色が変わるタイミングで数分間(15 分くらい?)だけ表示が変になるタイミングがあります。 間違い探しです。 これが見たくて待ち…

実数の二分探索・三分探索はループ回数を決め打ちしようね

これ、蟻本とかにも書かれているので常識かなと思ってたんですが、最近よくハマっている人を見かけるので、記事として書いておくことにします。 ↓ 追記 ↓ この記事と別の手法についても書きました。競プロの範囲ではどちらの手法でも困らない気もしますが、…

非再帰で補間多項式を求めるよ

問題設定 たかだか \(n\) 次式 \(f(x) = \sum_{i=0}^n a_i x^i\) がありますが、与えられません。 \(n+1\) 個の点 \(x_0, x_1, \dots, x_n\) と、それらの点での \(f\) の値 \(y_0, y_1, \dots, y_n\) が与えられます。 すなわち、\(y_i = f(x_i)\) (\(i=0, …

非再帰で多項式の多点評価をするよ

問題設定 多項式 \(f(x) = \sum_{i=0}^n a_i x^i\) と、\(m\) 個の異なる点 \(x_0, x_1, \dots, x_{m -1}\) が与えられます。 これらの点での値 \(f(x_0), f(x_1), \dots, f(x_{m -1})\) を求めてください。 ただし、各計算は \(998244353 = 119\cdot 2^{23}…

SA-IS を実装しました

一年くらい前に、いろんな日本語記事を読み漁ったものの、あまりわからず挫折して放置していました。 昨日、いつもの に書かれているのを見つけて、読むとわかった気になって、実装できました。 うまい例と、図などを用いながら動作を説明してくれるので、わ…

AtCoder で黄色になりました (2)

まず黄色になります。 rsk0315.hatenablog.com 次に青になります。 えびちゃん青コーダーになりました!! pic.twitter.com/s0j9LQYToa— えびちゃん (@rsk0315_h4x) August 17, 2019 (なんでここから半年かかってるんですかね...?) 以下、黄色になる (2) …

2020 年の目標

年明けから 1 月が経ったらしいので今年の目標を書きます。 年明けくらいに立てていた目標 今年中には TDPC うめたいなぁ。→ うめました ARC-B をうめたいなぁ。→ あと二問 さすがにこれじゃ一年かからなさそう。 いま考えている目標 数値的にわかるやつ ARC…

競技プログラマ向け C++17 機能紹介

競技プログラマ、どうせ #define しか使わなくないか if の初期化文 if 文の中に初期化文を書けるようになります。 たとえば、よくある DP の例を挙げます。 if (dp[next] > dp[cur] + cost) { dp[next] = dp[cur] + cost; ... } これは次のように書けるよう…

TDPC うめうめ記

TDPC こと Typical DP Contest を埋めました. TDPC うまったよ〜〜 pic.twitter.com/Njt8xE4wSz— えびちゃん (@rsk0315_h4x) January 28, 2020 色づけや提出日時についてはこの Userscript を使っています. greasyfork.org B 問題がめちゃむずで 10 日かか…

DDCC 2020 本戦参加記

DDCC 2020 の本戦に参加してきました. 予選は 695 位で,さすがに無理かなと思っていたんですが,DDCC 特有のアレでなんとか参戦できてよかったです. メールが来てから一瞬で登録して飛行機と宿を取る機械になっていました. 前日 えびちゃんは前泊をしま…

PAST アルゴリズム実技検定 #1 解説

これいる? 問題へのリンク. 前半の解説は こちらのブログ に詳しいです. A – 2 倍チェック / Is It a Number? #include <cctype> をすると isdigit(c) というのが使えて,c が数字かどうかを判定できます. 返り値は 0 か 0 以外なので,以下のようなコードではこ</cctype>…

Codeforces Round #395 (Div. 2) E: Timofey and remoduling

これのお話を書いてみます. codeforces.com 問題概要 素数 \(m\) と,要素数 \(n\) の数の集合 \(A\) が与えられる. 次の条件を満たす \(x\) および \(d\) が存在すればそれを出力せよ. 「この集合を並べ替えてできた長さ \(n\) の数列のうち,\(i\) 項め…

競プロで踏みがちな C++ の罠

定型文 この記事は Competitive Programming (1) Advent Calendar 2019 の 17 日目の記事です. adventar.org まえがき えー,未定義動作という言葉を知っていますか? 必要に応じて 昔の記事 を読むといいかもしれません. C++ を書く上でよく「環境依存」…