はまやんはまやんはまやん

hamayanhamayan's blog

競技プログラミング

競プロのエコシステムについて

この記事は競技プログラミングを始めたばかりの人に伝えたいことのカレンダー | Advent Calendar 2021の10日目の記事です。 カレンダーを見るとネタ被りをしていたのでテーマを変更しました。 競技プログラミングには色々な要素があり、初めて競プロを始めた…

競技プログラミングをやってきた

この記事は競プロ Advent Calendar 2021の10日目の記事です。 長年、競技プログラミングをやってきた。 気が付けば、最初に競技プログラミングを初めてから既に6年が過ぎていた。 別にこの記事を何らかの区切りにしようとか、そういった意図はないのだが、振…

Happy Wedding! [第八回 アルゴリズム実技検定 K]

https://atcoder.jp/contests/past202109-open/tasks/past202109_k 前提知識 最小費用流 (もしくは重み付き二部グラフ上での最大マッチング) 解説 https://atcoder.jp/contests/past202109-open/submissions/26707534 慣れていると、この問題がかなりフロー…

Reverse Array [第八回 アルゴリズム実技検定 J]

https://atcoder.jp/contests/past202109-open/tasks/past202109_j 前提知識 遅延評価セグメントツリー 解説 https://atcoder.jp/contests/past202109-open/submissions/26703507 遅延評価セグメントツリー以外にも沢山実装方法があるように見える。 今回、…

/2 and *3 [第八回 アルゴリズム実技検定 I]

https://atcoder.jp/contests/past202109-open/tasks/past202109_i 解説 https://atcoder.jp/contests/past202109-open/submissions/26690153 難しい問題。色々方針が思い浮かぶかもしれないが、思いつかないと中々厄介だろうと思う。 本質を見抜く 実は、今…

Shortest Path [第八回 アルゴリズム実技検定 H]

https://atcoder.jp/contests/past202109-open/tasks/past202109_h 前提知識 LCA 解説 https://atcoder.jp/contests/past202109-open/submissions/26687334 今回の問題は制約が割と緩いので、基本的な典型アルゴリズムを理解していると解ける。 愚直に考えて…

K-th element [第八回 アルゴリズム実技検定 G]

https://atcoder.jp/contests/past202109-open/tasks/past202109_g 前提知識 二分探索 解説 https://atcoder.jp/contests/past202109-open/submissions/26603092 この問題は正直典型問題として知っていないと解くのは難しいように思う。 二分探索を利用する…

Incomplete Permutation [第八回 アルゴリズム実技検定 F]

https://atcoder.jp/contests/past202109-open/tasks/past202109_f 構築 解説 https://atcoder.jp/contests/past202109-open/submissions/26602840 構築問題。 構築問題の基本は、シンプルな構築ルールである。 なるべく簡単に簡単に条件を満たせるルールを…

Colorful T-Shirts [第八回 アルゴリズム実技検定 E]

https://atcoder.jp/contests/past202109-open/tasks/past202109_e 解説 https://atcoder.jp/contests/past202109-open/submissions/26602632 貪欲法で解いていく。 かかる値段を最小化したいと考えた場合、簡単な方針として、安いものから選択するという方…

Divisor [第八回 アルゴリズム実技検定 D]

https://atcoder.jp/contests/past202109-open/tasks/past202109_d 前提知識 約数列挙 解説 https://atcoder.jp/contests/past202109-open/submissions/26602449 とある数の約数の個数が計算できれば、あとは判定するだけとなるので、 実質問題視されている…

Number of Apperance [第八回 アルゴリズム実技検定 C]

https://atcoder.jp/contests/past202109-open/tasks/past202109_c 解説 https://atcoder.jp/contests/past202109-open/submissions/26585529 問題で要求されていることを実装する問題。 入力の個数がやや多いので少し気を付ける必要があるかもしれない。 何…

intersection [第八回 アルゴリズム実技検定 B]

https://atcoder.jp/contests/past202109-open/tasks/past202109_b 解説 https://atcoder.jp/contests/past202109-open/submissions/26585385 やや工夫が必要になる問題。 配列A,Bに含まれる数は制約からすべて別々であるということから、 重複とかは考えず…

Bubbler [第八回 アルゴリズム実技検定 A]

https://atcoder.jp/contests/past202109-open/tasks/past202109_a 解説 https://atcoder.jp/contests/past202109-open/submissions/26585144 指定されていることを実装する問題。 取れる選択肢は、 「A + B - C」円(それぞれ頼んで割引する) 「D」円(セ…

箱と鍵 (Boxes and Keys) [JOI 2021/2022 一次予選 (第1回) 過去問 D]

https://atcoder.jp/contests/joi2022yo1a/tasks/joi2022_yo1a_d 解説 https://atcoder.jp/contests/joi2022yo1a/submissions/26486427 宝箱を中心に考えてみよう。 とある宝箱を開錠するためには書かれている番号と同じ番号が書かれた鍵が存在する必要があ…

複雑な文字列 (Complex String) [JOI 2021/2022 一次予選 (第1回) 過去問 C]

https://atcoder.jp/contests/joi2022yo1a/tasks/joi2022_yo1a_c 解説 https://atcoder.jp/contests/joi2022yo1a/submissions/26485238 文字種を数える問題なので、C++であればsetを使うのがオススメ。 setは同じ要素が入った場合でも1つにまとめてくれるの…

移動 (Moving) [JOI 2021/2022 一次予選 (第1回) 過去問 B]

https://atcoder.jp/contests/joi2022yo1a/tasks/joi2022_yo1a_b 解説 https://atcoder.jp/contests/joi2022yo1a/submissions/26485022 A地点からB地点を経由してC地点に移動するにはX+Y時間だけかかる。 判定したいのはZ時間30分以内に移動できるかというこ…

余り (Remainder) [JOI 2021/2022 一次予選 (第1回) 過去問 A]

https://atcoder.jp/contests/joi2022yo1a/tasks/joi2022_yo1a_a 解説 https://atcoder.jp/contests/joi2022yo1a/submissions/26484859 C++では何かで割った余りを計算する場合に%という演算子を使う。 21で割った余りを求めたいなら% 21だし、10で割った余…

Strange Lunchbox [サイシードプログラミングコンテスト2021(AtCoder Beginner Contest 219) D]

https://atcoder.jp/contests/abc219/tasks/abc219_d 前提知識 DP 解説 https://atcoder.jp/contests/abc219/submissions/26483767 あまりピンとこないかもしれないがDPで解ける。 初手でDPが思いついて試すとできたので、DPに至る過程は説明できない… DP dp…

Neo-lexicographic Ordering [サイシードプログラミングコンテスト2021(AtCoder Beginner Contest 219) C]

https://atcoder.jp/contests/abc219/tasks/abc219_c 解説 https://atcoder.jp/contests/abc219/submissions/26483284 実装問題。 C++であれば、特殊なソートは、比較関数を独自に作ることで実装が可能である。 比較関数 2つの文字列が与えられたときに大小…

Red and Blue Tree [エクサウィザーズプログラミングコンテスト2021(AtCoder Beginner Contest 222) E]

https://atcoder.jp/contests/abc222/tasks/abc222_e 解説 https://atcoder.jp/contests/abc222/submissions/26482282 恐らく初見だとかなり難しい問題に見えると思う。 問題を簡単化する 辺の塗り方を求める問題であるが、操作によってとある辺について何回…

Between Two Arrays [エクサウィザーズプログラミングコンテスト2021(AtCoder Beginner Contest 222) D]

https://atcoder.jp/contests/abc222/tasks/abc222_d 前提知識 DP 解説 https://atcoder.jp/contests/abc222/submissions/26480980 問題を眺めるとかなりDPな感じがする。 具体的には mod 998244353 先頭から数を決めていくと広義単調増加は1つ前しか見なく…

Swiss-System Tournament [エクサウィザーズプログラミングコンテスト2021(AtCoder Beginner Contest 222) C]

https://atcoder.jp/contests/abc222/tasks/abc222_c 解説 https://atcoder.jp/contests/abc222/submissions/26480601 シミュレーション問題、実装問題となる。 どういったことを問うているのかについては頑張って読み解いてほしい。 場合によってはサンプル…

Max Sum Counting [AtCoder Beginner Contest 216 F]

https://atcoder.jp/contests/abc216/tasks/abc216_f 前提知識 動的計画法 解説 https://atcoder.jp/contests/abc216/submissions/25449760 DPが分かっていることは前提なので勉強してきてほしい。 何から始めるのか 手がつかない場合は問題の弱点を探るのが…

Amusement Park [AtCoder Beginner Contest 216 E]

https://atcoder.jp/contests/abc216/tasks/abc216_e 解説 https://atcoder.jp/contests/abc216/submissions/25449841 この問題は貪欲法で解ける。 勉強熱心な方はDPを思いついたかもしれないが、たぶん正常な反応だと思う。 貪欲法で解けそうな問題が実際は…

Pair of Balls [AtCoder Beginner Contest 216 D]

https://atcoder.jp/contests/abc216/tasks/abc216_d 解説 https://atcoder.jp/contests/abc216/submissions/25449941 貪欲法というかシミュレーションで解く問題。 今回は目標を達成するには、ボールが取り出せるならどんな順番でもいいので取り出していっ…

Many Balls [AtCoder Beginner Contest 216 C]

https://atcoder.jp/contests/abc216/tasks/abc216_c 関連知識 構築問題 解説 https://atcoder.jp/contests/abc216/submissions/25449969 この問題は2進法についての理解があると解法が思いつきやすい。 このような構築問題は方針がいくつかあるが、Nを見る…

倉庫番ロボット [パソコン甲子園2020 予選 I]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0436 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0436/review/5811448/hamayanhamayan/C++14 解くのにかなり手こずった。難しかった。 ちょっとだけ遠回りも記しておこう。 …

高速道路網 [パソコン甲子園2020 予選 H]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0435 前提知識 トポロジカルソート 動的計画法 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0435/review/5811215/hamayanhamayan/C++14 まずは問題の整理をしていく。 与えら…

加工機 [パソコン甲子園2020 予選 G]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0434 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0434/review/5811086/hamayanhamayan/C++14 シミュレーション高速化していく問題となる。 加工後の高さをもっていきながら…

One More aab aba baa [AtCoder Beginner Contest 215 C]

https://atcoder.jp/contests/abc215/tasks/abc215_c 解説 https://atcoder.jp/contests/abc215/submissions/25247677 今回要求されている問題を実装できるかという問題となる。 前半と後半でやればいい。 文字列Sの各文字を並べ替えて作ることが可能な文字…