参考実装(自分用)スタックの利用(p.298)例題はヒストグラムに含まれる長方形面積の最大値を求める問題(どこかで見たことがある)。自分で思いつくのは、高い順に並べて1つずつ繋げながら長方形の面積の最大値を更新していく方法。(繋げて新しく出来た山の左右の端にマーキングしておいて、隣りに来た時に山に繋げられるようにしておく)ソートするのでO(NlogN)。蟻本で紹介しているのはスタックを使ってO(N)で解く方法。出来るよそれをN通り試せばよくて表を作っておけばそれぞれO(1)だから、合計でO(N)スタックを使うところスタックを用意する。ヒストグラムを左から走査。スタックに今のバーより高い地点の座標が入っていたら捨てる。スタックには今のバーより低い地点の座標しか入っていない、あるいは空の状態になる。いうことはスタックのtopにあるのは「現在地点から左に伸ばしてこれ以上伸ばせなくなった地点」=「現在地点から左に伸ばしたときの左限の1つ左」であるから、それ+1が求める左限である同様に右限を右からの走査で求める。アイデアは分かるんだけど、こういうの(スタックじゃなくて)priority_queueで書いてしまってO(NlogN)から計算量下がらんやんけ、みたいになりがちだったので、スタックでO(N)だよというのは使えるようになりたい。»@naoya_t自然言語処理とか機械学習とか競技プログラミングとか。競プロ精進記録は別ブログ🔒に移しました。yukicoder遅延伝搬セグメント木の復習をしたので、beetさん作問のセグ木コンテスト(2019/9/6開催)の問題を解いてみた。サウスタワー23Fなんで自分に参加権が来たのかよく分からないオンサイトイベントに参加してきた話。146のQ4でN個の点の3次元マンハッタン距離の最大値を求める問題が出たのでメモ。"なお、接尾辞配列を構成するアルゴリズムは他にも多数存在しています。14:00-FORCIAさんで開催されたオンサイトのゆるふわコンテストに参加。過去問コンテスト後に読んだ問題たち。ここで出てくるテクニックもこの機会にぜひ身につけておきたい。