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

hamayanhamayan's blog

競技プログラミング

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の各文字を並べ替えて作ることが可能な文字…

Coprime 2 [AtCoder Beginner Contest 215 D]

https://atcoder.jp/contests/abc215/tasks/abc215_d 解説 https://atcoder.jp/contests/abc215/submissions/25246926 始めてこういう系統の問題を見る人は何から手を付けていいか分からないだろう。 gcdをして1になる数は基本的には互いに素である数となる…

Chain Contestant [AtCoder Beginner Contest 215 E]

https://atcoder.jp/contests/abc215/tasks/abc215_e 前提知識 bitDP 解説 https://atcoder.jp/contests/abc215/submissions/25245742 この問題はbitDPの応用問題となる。 とりあえずmod数え上げなので、DPがまず第一候補として挙がってくる。 コンテストの…

Dist Max 2 [AtCoder Beginner Contest 215 F]

https://atcoder.jp/contests/abc215/tasks/abc215_f 前提知識 二分探索 尺取り法 (セグメントツリー、SparseTable) 解説 https://atcoder.jp/contests/abc215/submissions/25244049 二分探索と尺取り法の知識はこれ以降の解説を理解するのに必須であるので…

テトラへドロン [パソコン甲子園2020 予選 F]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0433 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0433/review/5788439/hamayanhamayan/C++14 かなり複雑な問題で何から手を付けたものかという感じだと思うが、規則性を見つ…

写真の回転 [パソコン甲子園2019 予選 E]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0432 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0432/review/5788072/hamayanhamayan/C++14 若干の高速化は含まれるが、大体は実装問題である。 盤面の回転処理を実装する…

カラフル円盤通し [パソコン甲子園2020 予選 D]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0431 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0431/review/5787948/hamayanhamayan/C++14 問題で要求されている問題をさばいていこう。 要求されている事項をプログラム…

あいさつまわり [パソコン甲子園2020 予選 C]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0430 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0430/review/5787700/hamayanhamayan/C++14 今回の問題はどういう順番で家を訪ねていくかというのを考えていくものであるが…

商店街へのお出かけ [パソコン甲子園2020 予選 B]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0429 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0429/review/5787654/hamayanhamayan/C++14 与えられた判定問題を実装していく、実装問題となる。 条件をプログラムに落と…

緯度経度 [パソコン甲子園2020 予選 A]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0428 解説 https://onlinejudge.u-aizu.ac.jp/solutions/problem/0428/review/5787569/hamayanhamayan/C++14 基本的な入出力を問うような問題。 競技プログラミングを始めるには、言語を決…